Laravel 4:在注册期间检查电子邮件是否真实


Laravel 4: Checking if an email is real during registration

我需要检查用户在注册期间输入的电子邮件是否有效/真实,这意味着他们不能只输入他们想要的任何内容,只要它符合正确的电子邮件格式,我需要能够向它发送邮件。

不过,我也不想做电子邮件确认,因为用户必须点击电子邮件中的链接才能注册。我只是想当场核实一下。

您可以进行所有想要的验证,但最终最好也是唯一的方法是发送带有验证链接的电子邮件。

此外,因为有大量有效和奇怪的电子邮件,你可能会认为不是,所以我们的想法通常是进行相当宽松的验证。看看这里的各种有趣的电子邮件。

您需要在域的MX记录上进行DNS查找,然后确保MX域是可联系的。我认为这是你能得到的最接近的。

您也可以考虑让第三方为您进行验证,例如,将Google OAuth作为您网站的注册方法。

如果是Laravel(你已经提到它作为问题的标签),我建议你使用Laravel的原生功能,如Validation:Laravel 3/Laravel 4。以下是我如何在POST控制器中使用它:

// Rules for form validation
$rules = array(
        'email'    => array('required', 'email', 'unique:users,email'), // Email is required and should satisfy E-mail format and it should be unique for table users.
);
// Form validation
$validation = Validator::make(Input::all(), $rules);
if($validation->fails()) {
    // Flash validator with input values and errors to some controller
        Former::withErrors($validation);
        return Redirect::to_action('some.controller')
            ->with_input()
            ->with_errors($validation);
    }
}

在一般的PHP使用情况下,您可以使用PHP的本机函数进行检查,如下所示:

filter_var($email, FILTER_VALIDATE_EMAIL)