使用laravel电子邮件验证的html输入字段的电子邮件格式不一致

时间:2018-02-21 07:12:03

标签: html laravel email-validation email-formats

在我的刀片文件中,我有一个用户的html表单,其中输入字段电子邮件具有类型电子邮件。但我认为它提供了不一致的电子邮件格式验证。例如,它显示abc @ xyz和abc@xyz.com都是正确的电子邮件地址但在我的控制器中,验证方法返回abc @ xyz的无效电子邮件格式。我该如何解决这个问题?

在我的刀片文件中:

<input type="email" name="email" value="">

在我的控制器中:

$validator = Validator::make($request->all(), [
     'email'       => 'email|unique:table_name,col_name',
    ],[
     'email.unique' => 'email is already in used',
   ]);

if ($validator->fails()) {
    return redirect()->back()->withInput($request->all())->withErrors($validator);
  }

1 个答案:

答案 0 :(得分:0)

实际上Laravel使用PHP内置函数filter_varsource code)。

// Illuminate\Validation\Concerns\ValidateAttributes

/**
 * Validate that an attribute is a valid e-mail address.
 *
 * @param  string  $attribute
 * @param  mixed   $value
 * @return bool
 */
public function validateEmail($attribute, $value)
{
    return filter_var($value, FILTER_VALIDATE_EMAIL) !== false;
}

PHP实施的规则与浏览器实施的规则完全不同。 abc@xyz已通过浏览器验证规则,因为xyz是有效hostname(您可以将其读为here)。但PHP实施了更严格的规则,即电子邮件地址应包含顶级域名。