目前我的代码总是输出echo "用户名/密码不正确。";
无论用户名/密码是否匹配。我的问题是,下面的php代码有什么问题,导致它总是输出"用户名/密码不正确"。
<?php
require 'privstuff/dbinfo.php';
$password1 = $_POST["password1"];
$username = $_POST["username"];
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
if(mysqli_connect_errno()) {
echo "Connection Failed. Please send an email to owner@othertxt.com regarding this problem.";
exit();
}
if ($stmt = $mysqli->prepare("SELECT username, password FROM accounts WHERE username=? and password=?")) {
$db_pw = password_hash($password1, PASSWORD_BCRYPT);
$stmt->bind_param("ss", $username, $db_pw);
$stmt->execute();
if ($stmt->affected_rows > 0) {
echo "Logged in.";
}else{
echo "Username/Password incorrect.";
}
$stmt->close();
}
$stmt->close();
$mysqli->close();
?>
更新我已将 if ($stmt->affected_rows > 0)
更改为 if ($stmt->num_rows)
。但仍然不起作用。
更新2我意识到问题出在我使用了 password_hash($password1, PASSWORD_BCRYPT);
我没有意识到哈希每次都会生成不同的字符串。我不明白如何使用password_verify。
$stmt->num_rows
而不是$stmt->affected_rows
吗? - Charlotte Dunoisvar_dump($stmt);
,你会得到什么? - Charlotte Dunois