当用户忘记密码时,我已经生成了用于重置密码的令牌,一旦提交,他们将提交电子邮件。我将与令牌一起发送邮件到他们的电子邮件
因此,一旦他们单击链接,他们将重置其密码,以便令牌值将在该用户的“秘密”列中更新
所以我想做的是一旦用户使用了这个,我想从秘密专栏里删除它
我不知道该如何处理
谁可以帮我这个事
这是我的代码:
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));
的方式谁能帮我解决这个问题。
提前致谢。
最佳答案
在这里,我以不同的方式进行操作。我正在检查表中的令牌值(如果已存在),显示错误消息,因此他们将无法使用旧令牌
这是我的代码:
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
}
}
它运行良好。
关于php - 一旦在PHP中使用了用户, token 必须从表中删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50922014/