我如何将变量$passHash从寄存器函数放到登录函数,因为我尝试使用password_verify()方法,它需要我的哈希
我尝试从数据库中获得我的hashe密码,并将其放到password_verify()中,但它不起作用。
public function register($uname, $email, $pass) {
$passHash = password_hash($pass, PASSWORD_DEFAULT);
$sqlQuery="INSERT INTO UserData (userName, userEmail, userPassword) VALUES (:userName,:userEmail,:userPassword)";
$stmt = $this->db->prepare($sqlQuery);
$stmt->bindparam(':userName', $uname);
$stmt->bindparam(':userEmail', $email);
$stmt->bindparam(':userPassword', $passHash);
if($stmt->execute()) {
return true;
} else {
return $stmt->error;
}
}
public function login($emailUser,$passUser){
$sqlQuery= "SELECT * FROM UserData WHERE userEmail=? AND userPassword=? ";
// $sqlQuery.Id;
$stmt = $this->db->prepare($sqlQuery);
$stmt->execute([$emailUser, $passUser]);
$result = $stmt->fetch(PDO::FETCH_ASSOC); <-- NOT WORKING SO I try get hash variable from register function
$checkPassword=password_verify($passUser,$result["userPassword"]);
if($checkPassword==true){
if($stmt->rowCount()==0){
echo "err";
}else{
echo "success";
}
}else{
echo 'bad pass';
}
}发布于 2022-08-04 15:33:14
运行成功登录尝试的步骤:
$emailUser =$POST‘$emailUser’;$passUser =
从UserId,userPassword从UserData选择userEmail=?
使用
if(password_verify($passUser,$result‘’userPassword)){.
$stmt->fetchAll();检索数据行SELECT *是错误的做法。$stmt->rowCount()==0子句将始终失败,因为它是在密码经过测试和通过之后,所以删除整个部分。H 231H 132告诉人们他们的密码失败了,因为如果有人在这个系统上有电子邮件,这是错误的。相反,请说明“您的电子邮件或密码是不正确的”,因此如果某个人的电子邮件在系统上,第三方就不能那么容易地建立它。https://stackoverflow.com/questions/73238462
复制相似问题