【问题标题】:Laravel - Validate email domainLaravel - 验证电子邮件域
【发布时间】:2017-06-23 11:12:49
【问题描述】:

我想在用户输入无效域时验证域,例如 theemail@invaliddomainame.com

$createAccount_validator = Validator::make($request->all(), [

        'username'=>'required|min:6',
        'email'=>'required|email|unique:userTable)',

]);

目前邮件验证的 API 是高级的所以我不想用。

【问题讨论】:

  • 那么,您要排除电子邮件主机列表吗?
  • @Jerodev 我想验证用户何时输入不存在的无效域。
  • @user3151197 这很复杂。您必须执行 WHOIS,查询 MX 记录,查询 A 记录等。运行需要几秒钟,很可能,而且不会特别可靠......而且您仍然会结束有很多有效的域,但仍然有无效的电子邮件。如果您需要真实电子邮件,请向其发送验证电子邮件,并附上点击链接。
  • @ceejayoz 如果 laravel 允许我可以验证域 get_headers。
  • @user3151197 虽然可以使用 Laravel 自定义验证器,但这是行不通的。大量电子邮件来自在该域上没有网站的有效域。

标签: php laravel validation laravel-5


【解决方案1】:

~app/Http/Requests/UserRequest.php 下,您可以对email_domain 字段使用正则表达式,例如

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        ...
        'email_domain' => [
            'required', 
            'regex:/^(?!\-)(?:(?:[a-zA-Z\d][a-zA-Z\d\-]{0,61})?[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$/',
        ]
    ];
}

This pattern I'm using 符合规范中定义的大部分规则。请注意,在这种情况下,我们需要在前后使用/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2016-05-12
    • 2019-02-12
    • 2021-02-15
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多