通过PHP中的电子邮件验证用户

时间:2011-02-06 08:58:15

标签: php email authentication verification email-validation

我实际上正在使用PHP创建一个Web应用程序,并寻求帮助验证用户。 与某些网站一样,当您注册时,会向您发送一封带有确认链接的电子邮件。我如何在PHP中实现它? 我所知道的是,我必须使用PHP mail()函数来发送电子邮件。 请帮忙。必要。谢谢。 :)

3 个答案:

答案 0 :(得分:7)

帕特里克的答案是正确的,我想指出还有其他可能性!

您不必在数据库中创建和存储唯一标记。这是数据开销,只需要一次。

您还可以利用单向散列。

例如,向用户发送代码md5('my-secret-application-token'.$user_email_adress)

您可以以相同的方式验证,但不需要存储密码。

答案 1 :(得分:3)

这是一个非常广泛的问题,所以我们只能给出一个广泛的答案,但这样做的一般技术是

  1. 将用户的电子邮件地址插入数据库,但将其标记为未经验证
  2. 创建一个唯一的注册密钥,并将其插入另一个表中,仅用于这些密钥
  3. 向用户的电子邮件地址发送一封电子邮件,其中包含指向您的网站的链接,该链接将此注册码作为参数传递(例如http://site.com/confirm.php?key=1234
  4. 访问该网址时,将该电子邮件标记为已验证并删除临时创建的注册密钥

答案 2 :(得分:1)

CSRF保护一样,您可以生成唯一令牌。

$token =  md5(uniqid(rand(), TRUE));

您将该值存储在该电子邮件的会话中,当用户点击电子邮件中的链接时(您通过query-string传递令牌),您可以比较这两个值。

为了使其更安全,您可以像CSRF一样添加时间限制。