我正在使用drupal 7。 我具有此功能,当用户请求忘记密码时,他会获得一个一次性链接,如果他/她单击该链接,那么他们会转到某个页面,可以在其中更改密码。
但是此功能有些需要修改。 假设如果他们不单击发送给他们的链接,然后再次请求忘记密码,我想向他们发送相同的按时间重置密码的链接,直到24小时不生成新的链接,或者如果他们单击发生的任何一个首先。
所以我们有任何函数可以告诉我们数据库中是否已经存在一次密码重置链接,如果可以,我们如何重用它而不是创建新的一次密码重置链接。
如果他们单击一次性忘记密码链接,则他们应该进入密码重置页面(按预期工作),但他们不能单击任何其他导航图标,如果他们点击了,消息应该告诉他们,他们需要先重设密码。
现在我正在这样做:
function oc_multipart_login_generate_one_time_link($userdetail) {
$timestamp = REQUEST_TIME;
if (!empty($userdetail->invite_url)) {
return url("user/reset/$userdetail->uid/$timestamp/" . user_pass_rehash($userdetail->pass, $timestamp, $userdetail->login, $userdetail->uid), array('absolute' => TRUE, 'query' => array('destination' => $userdetail->invite_url)));
} else {
return url("user/reset/$userdetail->uid/$timestamp/" . user_pass_rehash($userdetail->pass, $timestamp, $userdetail->login, $userdetail->uid), array('absolute' => TRUE));
}
我们可以看到此功能正在使用时间戳生成一次性密码重置URL .....因此,如果用户再次请求重置密码功能而没有单击发送的第一个电子邮件链接,则新链接将为多少有些不同,但我希望它应该一直到:24小时过去或用户单击它,以先到者为准。
谢谢。