一旦用户在php中使用,Token必须从表中删除

时间:2018-06-19 06:37:16

标签: php mysql

我已经为用户忘记密码时生成了重置密码令牌,他们会在提交后提交电子邮件我将发送邮件连同令牌

因此,一旦他们点击链接,他们就会重置密码,以便在该用户的秘密列中更新令牌值

所以我想要做的就是一旦用户使用这个我想从秘密专栏中删除

我不知道如何处理这个

任何人都可以帮助我吗

这是我的代码:

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));

的方式

任何人都可以帮我解决这个问题。

提前致谢。

1 个答案:

答案 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     
                }
                }

它运作得很好。