如何创建忘记密码系统?

时间:2016-06-24 13:53:51

标签: php mysql security

我有一个像SO这样的网站。 登录页面中还有一个名为忘记密码的链接,该链接会发送电子邮件以重置密码。如您所知,电子邮件包含以下链接:

http://www.example.com/resetpassword?token={what thing can be here?}

如您所见,我的问题是该令牌的价值。

这是我的表结构:

// users
+----+--------+---------------+---------------+------------------------------+
| id |  name  |   password    |    cookie     | /* and some other columns */ |
+----+--------+---------------+---------------+------------------------------+
| 1  | jack   | d404559f60... | 0c2c62b9dc... | /* anything */               |
+----+--------+---------------+---------------+------------------------------+

password 专栏:

$password = $_POST['password'];   // ex: 1234
$password = hash('sha512',$pass); // d404559f602eab6fd602ac7680dacbfaadd13630335e951f097af3900e9de176b6db28512f2e000b9d04fba5133e8b1c6e8df59db3a8ab9d60be4b97cc9e81db

cookie 专栏:

$email = 'jack.1998@gmail.com';
$cookie = hash('sha512', $email.$password); // 0c2c62b9dc9bdf72ce4c845cc400dcc96ebf9898e1b3e821c7d99cae3dbe486e3b0534ccd73903dfc03cb4b424b39fdd67b68724708ddfd56424bf14ee4507bf

当我读到thisthis答案时:该标记应该是一个随机字符串。我必须将它存储到数据库(用于验证)

我的问题是什么?我可以使用$cookie的值作为该令牌吗?

注1:我已使用$password变量生成$cookie值,因为我想在更改密码时从所有设备注销用户。< / p>

注2:我不希望重置密码链接(我已发送到电子邮件中)的任何过期时间。

0 个答案:

没有答案