gpt4 book ai didi

validation - 阻止或允许带有 ‘+’ 的电子邮件地址是标准做法吗?

转载 作者:行者123 更新时间:2023-12-03 16:36:03 25 4
gpt4 key购买 nike

我希望每个用户都使用唯一的电子邮件地址进行注册。但是,某些电子邮件地址(例如 GMail)允许您添加一个 + 后缀,该后缀可用于将多个帐户注册到一个网站,但它会全部发送到一个电子邮件地址,例如

  • bob@gmail.com 转到 bob@gmail.com
  • bob+1@gmail.com 转到 bob@gmail.com
  • bob+2@gmail.com 转到 bob@gmail.com
  • bob+3@gmail.com 转到 bob@gmail.com
  • bob+4@gmail.com 转到 bob@gmail.com

  • 实际上,他们可以拥有任意数量的电子邮件地址。这是一个问题,因为我的网站将其视为 5 个独立的电子邮件地址,但 gmail 将其视为一个电子邮件地址。

    我想阻止任何带有“+”的电子邮件地址,但我不想阻止任何有效的电子邮件地址。什么是标准做法?

    最佳答案

    我不认为有关于如何处理这个问题的标准做法,除了不允许 + 全部一起。另一方面,阻止它似乎没有那么有用。如果您打算屏蔽的人真的需要它,那么在某些免费服务上创建一个全新的电子邮件地址不会超过几分钟。

    还应该注意的是,许多其他电子邮件提供商也提供子寻址,但不使用加号,而是使用连字符(Yahoo、Runbox 等),试图阻止它只会给任何人带来麻烦只是有一个带有连字符的电子邮件地址。这是一场你已经输掉的 war 。

    此外,如果你过滤掉加号,你基本上不符合 RFC3696不再标准:

    The exact rule is that any ASCII character, including control characters, may appear quoted, or in a quoted string. [...]

    Without quotes, local-parts may consist of any combination of alphabetic characters, digits, or any of the special characters

    ! # $ % & ' * + - / = ?  ^ _ ` . { | } ~


    但如果你坚持,你可以去掉加号部分。

    $emails = array('bob@gmail.com','bob+1@gmail.com','bob+hello@gmail.com');

    foreach ($emails as &$email)
    {
    list($identifier, $domain) = explode('@',$email);
    list($name) = explode('+',$identifier);
    $email = $name."@".$domain;
    }

    print_r($emails);

    以上会给你
    Array
    (
    [0] => bob@gmail.com
    [1] => bob@gmail.com
    [2] => bob@gmail.com
    )

    关于validation - 阻止或允许带有 ‘+’ 的电子邮件地址是标准做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702480/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com