我想使用sql
更改密码。我从这样的网址中获取令牌:
http://localhost:8001/app/changepass?&token=nsfrvomltz
我使用GET method
从网址获取该令牌“ 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;
}
}
已收到电子邮件,用户单击链接,然后输入新密码。
此后,他单击“确定”按钮,但密码未更改。