【发布时间】:2017-06-24 02:21:08
【问题描述】:
我实际上是在使用 PHP 创建一个 Web 应用程序并寻求帮助来验证用户。
与某些网站一样,当您注册时,系统会向您发送一封带有确认链接的电子邮件。我如何在 PHP 中实现它?
我只知道我必须使用 PHP mail() 函数来发送电子邮件。
请帮忙。必要的。谢谢。 :)
【问题讨论】:
标签: php email authentication verification email-validation
我实际上是在使用 PHP 创建一个 Web 应用程序并寻求帮助来验证用户。
与某些网站一样,当您注册时,系统会向您发送一封带有确认链接的电子邮件。我如何在 PHP 中实现它?
我只知道我必须使用 PHP mail() 函数来发送电子邮件。
请帮忙。必要的。谢谢。 :)
【问题讨论】:
标签: php email authentication verification email-validation
这是一个非常宽泛的问题,所以我们只能给出一个宽泛的答案,但这样做的一般技巧是
【讨论】:
就像使用CSRF 保护一样,您会生成一个唯一令牌。
$token = md5(uniqid(rand(), TRUE));
您将该值存储在该电子邮件的会话中,当用户单击电子邮件中的链接时(您通过 query-string 传递令牌)您比较这两个值。
为了使其更安全,您可以像使用 CSRF 一样添加时间限制。
【讨论】:
bin2hex(openssl_random_pseudo_bytes(64))
Patricks 的回答是正确的,但我想指出还有其他可能性!
您不必在数据库中创建和存储唯一令牌。这是只需要一次的数据开销。
您还可以利用单向哈希。
例如向用户发送代码md5('my-secret-application-token'.$user_email_adress)。
您可以用同样的方式验证,但不需要存储密码。
【讨论】:
my-secret-application-token,那么我可以以任何我想登录的用户身份登录:P。