[英]PDO login system rowcount ALWAYS returning null
so my PHP & PDO login is returning 0 every time, even if the info is correct.所以我的 PHP 和 PDO 登录每次都返回 0,即使信息是正确的。 The register page works fine, no errors in that.注册页面工作正常,没有错误。 But as soon as I try to login, it seems that $Count = $stmt->rowCount();
但是一旦我尝试登录,似乎$Count = $stmt->rowCount();
is returning null every time.每次都返回 null 。 I tried echoing $Count to see what the value was returning, and even if the information was 100% correct it still returned zero.我尝试回显 $Count 以查看返回的值,即使信息 100% 正确,它仍然返回零。 Any help?有什么帮助吗? Here's my code.这是我的代码。
public function userLogin($email, $password)
{
try {
$dbConnection = $this->DBConnect();
$stmt = $dbConnection->prepare('SELECT * FROM `users` WHERE `email` = :email and `password` = :password');
$hash_password = hash('sha256', $password);
$stmt->bindParam(":email", $email, PDO::PARAM_STR);
$stmt->bindParam(":password", $hash_password, PDO::PARAM_STR);
$stmt->execute();
$Count = $stmt->rowCount();
$data = $stmt->fetch(PDO::FETCH_OBJ);
if ($Count == 1) {
session_start();
$_SESSION['uid'] = $data->UID;
$_SESSION['username'] = $data->username;
$_SESSION['firstname'] = $data->firstname;
$_SESSION['lastname'] = $data->lastname;
$_SESSION['ip_address'] = $data->ip_address;
header('Location: /panel/index?success');
$dbConnection = null;
return true;
} else {
header('Location: /panel/login?error');
$dbConnection = null;
return false;
}
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
you better put that to use: password_hash() and password_verify()你最好把它使用:password_hash() 和 password_verify()
$dbConnection = $this->DBConnect();
$stmt = $dbConnection->prepare('SELECT * FROM `users` WHERE `email` = :email AND password != ""');
$stmt->bindParam(":email", $email, PDO::PARAM_STR);
$stmt->execute();
if($data = $stmt->fetch(PDO::FETCH_OBJ)) {
if(password_verify($password, $data->password) === TRUE) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.