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

Php Laravel 4:在注册期间检查电子邮件是否真实,php,email,laravel-4,Php,Email,Laravel 4,我需要检查用户在注册期间输入的电子邮件是否有效/真实,这意味着他们不能只输入他们想要的任何内容,只要它符合正确的电子邮件格式,我需要能够向它发送邮件 不过,我也不想做电子邮件确认,因为用户必须单击电子邮件中的链接才能注册。我只想现场验证。您需要在域的MX记录上进行DNS查找,然后确保MX域是可联系的。我想这是你能得到的最接近的了 你也可以考虑让第三方为你做验证,例如将谷歌OAuthe作为你网站注册的一种方法。 你可以做所有你想要的验证,但最终最好的也是唯一的方法是发送一个带有验证链接的电子邮件。

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


不过,我也不想做电子邮件确认,因为用户必须单击电子邮件中的链接才能注册。我只想现场验证。

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


你也可以考虑让第三方为你做验证,例如将谷歌OAuthe作为你网站注册的一种方法。

你可以做所有你想要的验证,但最终最好的也是唯一的方法是发送一个带有验证链接的电子邮件。 此外,因为有大量的有效和奇怪的电子邮件,你会认为不是,一般的想法是有相当松散的验证。对于各种有趣的电子邮件。

对于Laravel(您提到它作为问题的标签),我建议您使用Laravel的原生功能作为验证:/。 以下是我在POST controller中如何使用它:

// 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)

我认为您所能做的最好的事情就是验证域是否存在,即使这样,它也无法正常工作唯一知道它是否有效的方法是您不想这样做的方式,因此..?您可以验证域是否存在,连接到SMTP服务器,甚至尝试向用户发送邮件。正确配置的SMTP服务器不会告诉您用户是否存在,它会接受所有邮件并放弃发送给不存在的用户的邮件。除了使用带宽和cpu之外,没有真正的方法来验证用户的干预。这是不正确的。它将捕获那些输入乱七八糟的域名和未配置邮件的域名的人。我同意这一点,它的作用很小。它可以进行格式验证,这很好,但无法验证电子邮件是否真实。