首页 > 解决方案 > 无法将令牌从函数发送到另一个函数

问题描述

我想使用 更改密码sql。我从这样的网址中获取令牌:

http://localhost:8001/app/changepass?&token=nsfrvomltz

我用来GET method从 url 获取令牌“nsfrvomltz”:

if(isset($_GET['token'])){
    $token = $_GET['token'];
}

然后我用新密码将它发送到另一个函数:

$this->userModel->changepass($newPass, $token)

这个函数在另一个类中,我可以使用控制器访问它:

public function changepass($newPass, $token){
        $this->db->query("UPDATE users SET password = :newPass WHERE token = :token");
        $this->db->bind(':password', $newPass);
        $this->db->bind(':token', $token);
        if($this->db->execute()){
            return true;
        } else {
            return false;
        }
    }

问题是即使我使用了这个函数的令牌也是空的GET method,所以查询不起作用,密码也不会改变。

$newPass值,但令牌仍然为空。我不知道为什么。

我感谢任何形式的帮助。

更新:

我使用另一个函数向用户发送电子邮件:

public function forget($email){
         $this->db->query('SELECT token FROM users WHERE email = :email');
        $this->db->bind(':email', $email);
        $res = $this->db->single();
        $message = "Please click on this link to change your password:
http://localhost:8001/app/changepass?&token=$res->token";
        mail($email, "Forget password", $message, "From: app");
        if($this->db->execute()){
            return true;
        } else {
            return false;
        }
    }

收到电子邮件后,用户点击链接,然后输入新密码。

在此之后,他单击“确定”按钮,但密码没有改变。

标签: php

解决方案


推荐阅读