当用户忘记密码时,我已经生成了用于重置密码的令牌,一旦提交,他们将提交电子邮件。我将与令牌一起发送邮件到他们的电子邮件

因此,一旦他们单击链接,他们将重置其密码,以便令牌值将在该用户的“秘密”列中更新

所以我想做的是一旦用户使用了这个,我想从秘密专栏里删除它

我不知道该如何处理

谁可以帮我这个事

这是我的代码:

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/

10-11 09:28