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

发布于 2024-10-16 15:12:25 字数 156 浏览 6 评论 0原文

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

I'm actually creating a web application using PHP and seek help verifying a user.
As with certain websites, when you register, an e-mail is sent to you with a confirmation link. How do I implement that in PHP?
All I know is that I have to use the PHP mail() function to send the e-mail.
Please help. Necessary. Thanks. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿嘿嘿 2024-10-23 15:12:25

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

您不必在数据库中创建和存储唯一的令牌。这是只需要一次的数​​据开销。

您还可以利用单向散列。

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

您可以以同样的方式验证这一点,但不需要存储密码。

Patricks answer is correct altough i want to point out that there are other possibilities!

You don't necessarily have to create and store a unique token in your database. This is data overhead that is only needed once.

You could also take advantage of one-way hashing.

For example send the user the code md5('my-secret-application-token'.$user_email_adress).

You can validate that just the same way but dont need to store a secret code.

羁绊已千年 2024-10-23 15:12:25

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

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

This is a very broad question, so we can only give a broad answer, but the general technique to do so is

  1. insert the user's email address into your database but mark it as unverified
  2. create a unique registration key and insert it into a different table just for these keys
  3. send an email to the user's email address with a link to your site that passes this registration key as an argument (eg http://site.com/confirm.php?key=1234)
  4. when that url is visited, mark the email as verified and remove the temporarily created registration key
属性 2024-10-23 15:12:25

就像使用 CSRF 保护一样,您会生成一个唯一的令牌。

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

您将该值存储在该电子邮件的会话中,并且当用户单击电子邮件中的链接时(您通过 query-string) 您比较两个值。

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

just like with CSRF protection you generate an unique token.

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

You store that value in your session for that email and when the user clicks link in email(you pass token via the query-string) you compare the two values.

To make it more secure you could just as with CSRF add a time-limit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文