我已经为用户忘记密码时生成了重置密码令牌,他们会在提交后提交电子邮件我将发送邮件连同令牌
因此,一旦他们点击链接,他们就会重置密码,以便在该用户的秘密列中更新令牌值
所以我想要做的就是一旦用户使用这个我想从秘密专栏中删除
我不知道如何处理这个
任何人都可以帮助我吗
这是我的代码:
if (isset($_POST['resetpassword'])) {
$token=$_GET['token'];
$password = $_POST['password'];
$secret = $token;
$add_qry = '';
if (trim($password) != '') {
$password_hash = password_hash($password, PASSWORD_DEFAULT);
$add_qry = ", password = '" . $password_hash . "'";
}
$update_qry = "UPDATE {user} SET password = ? ,secret=? WHERE id = '$id'";
if ($DB->execute($update_qry, array($password_hash, $secret))) {?>
<div class="alert alert-success">
<p align="center"><strong>Success</strong></p> </div>
<?php
} else {
echo "Problem in Editing Record";
}
}
这就是我生成随机令牌$token=md5(uniqid(rand(), true));
任何人都可以帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
这里我以不同的方式完成。我正在检查表中的令牌值,如果它已经在那里我显示错误消息,因此他们无法使用旧令牌
这是我的代码:
if (isset($_POST['resetpassword'])) {
$password = $_POST['password'];
$secret = $token;
$add_qry = '';
if (trim($password) != '') {
$password_hash = password_hash($password, PASSWORD_DEFAULT);
$add_qry = ", password = '" . $password_hash . "'";
}
$gettokenvalue="SELECT * from {user} where secret=? and id='$id'";
if (!$tokengenerate= $DB->get_record_sql($gettokenvalue, array($secret))) {
$update_qry = "UPDATE {user} SET password = ? ,secret=? WHERE id = '$id'";
if ($DB->execute($update_qry, array($password_hash, $secret))) {?>
<div class="alert alert-success">
<p align="center"><strong>Your password has been changed successfully.</strong></p> </div>
<?php
}
else {
echo "Problem in Editing Record";
}
}else {
?>
<div class="alert alert-danger">
<p align="center"><strong>This token has already been used.Please raise new request for reset your pasword</strong></p> </div>
<?php
}
}
它运作得很好。