创建一个密码重置链接,该链接在PHP中24小时后到期

时间:2012-08-16 15:47:17

标签: php passwords change-password

我是PHP的新手。我想创建一个模块,其中门户网站管理器使用临时密码创建“用户”。

  1. 创建用户后,该特定用户应收到电子邮件,其中的链接将在24小时后过期。
  2. 管理员通过其他方式向用户传达临时密码。
  3. 如果用户在24小时内点击了电子邮件链接,则应询问临时密码,新密码并确认新密码字段。
  4. 如果临时密码正确,则用数据库中的新密码替换临时密码。
  5. 我该如何实现?

2 个答案:

答案 0 :(得分:1)

一种选择是在您存储在数据库中的链接中包含一个参数以及到期日期。如果没有此类参数,则不接受该链接。如果有参数,您可以在数据库中检查到期日期。如果有效,则进入更改密码页面。

示例链接:

http://www.example.com/updatepass?key=a8s67as78df7g96sd9fg6sdfg

在具有此结构的数据库表中:

reset_id, user_id,  reset_key, reset_timeout, reset_temp_password

您可以验证key参数,然后验证临时密码。 user_id将用于加入存储用户信息的user表。

答案 1 :(得分:0)

我无法为你编写,因为我不知道你的应用程序是如何构建的,但这将是我采取的一般方法:

  1. 创建用户,可能是用户名,这些详细信息放在数据库中。
  2. 临时密码是作为随机字符串生成的。在数据库中存储哈希值(MD5,SHA - 如果你不知道那些谷歌)以及时间戳NOW()
  3. 用户使用用户名和临时密码登录。如果用户名和密码匹配,并且当前时间减去记录的时间少于24小时,则要求输入新密码。执行相同的过程,将其哈希并将其存储在数据库中。当他们下次登录时,检查哈希匹配。
  4. 这是否有意义或任何部分是否完全陌生并需要进一步解释?