我正在使用 PHPPass 进行密码加密和验证登录。
当我尝试登录时,它给出了错误:_
警告:mysqli::prepare() [mysqli.prepare]: 无效的对象或资源 C:\mysqli rootfile-blahblahblah\includes\user.php 在第 41 行
致命错误:在第 43 行的 C:\rootfile-blahblahblah\includes\user.php 中的非对象上调用成员函数 bind_param()
我按照手册进行身份验证,但由于某种原因它无法正常工作。
这是身份验证功能的代码
public static function authenticate($username, $password)
{
$pwdhasher = new PasswordHash(8, FALSE);
$hashed_pwd = $pwdhasher->HashPassword($password);
$db = new mysqli();
$stmt = $db->prepare("SELECT hashed_password FROM users WHERE username=? LIMIT 1");
if (!$stmt) die($db->error);
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($hashed_pwd);
if ($pwdhasher->CheckPassword($password, $hashed_pwd)) {
return true;
} else {
return false;
}
unset($pwdhasher);
}
对于运行函数的 login.php 页面:_
$username = $database->escape_value(trim($_POST['username']));
$password = $database->escape_value(trim($_POST['password']));
$user = User::find_by_id(1);
$found_user = User::authenticate($username, $password);
if ($found_user)
{
$session->login($found_user, $user);
$message = "You have Logged in.";
redirect_to("index.php");
}
else { $message = "Incorrect username/password."; }
}
我已经搜索并尝试了很多东西,但无济于事。:/
现在你看,我想要的是检查数据库中的用户名和哈希密码,如果它们正确则登录,我知道如何检查密码()并用 HashPassword 加密,但我找不到如何制作它验证用户名和密码....