成功验证数据库中存在用户名后,我需要验证密码是否也匹配。因此,我需要从数据库中检索哈希密码,对吗?或者我还有其他选择吗?
我使用 PHP 5.5 API bcrypt 进行哈希处理。当我从数据库获取密码时,我的代码会给我一个 500 内部服务器错误。我该如何正确地做到这一点?
这是我的 php 代码:
// If found username, check password, else respond invalid username
if($countRows!==0){
// Get hash from database
// Prepare statement
$stmt = $conn->prepare('SELECT password FROM users WHERE username = ?');
// Bind
$stmt->bind_param('s', $ps_username);
// Set Parameters
$ps_username = $username;
// Execute
$hash = $stmt->execute();
// Check password
if (!password_verify($password, $hash)) {
if($error != ""){
$error .= '<br>';
}
$error .= 'The user or password you entered do not match, please try again.';
}
else {
echo 'OK';
// Session start
// Redirect user to profile/homepage
}
}
有人可以推荐一些可以让我学习 SQL 命令的东西吗?我找不到一个好地方。
执行() http://php.net/manual/en/mysqli-stmt.execute.php不返回任何列数据。它返回一个布尔值(真/假)。这是您的代码块首先失败的地方:
$hash = $stmt->execute();
您可以在此处查看有关如何从结果集中获取数据的示例:http://php.net/manual/en/mysqli-stmt.fetch.php http://php.net/manual/en/mysqli-stmt.fetch.php
一个例子是:
$stmt->execute();
$stmt->bind_result($hash);
$stmt->fetch();
回应:
有人可以推荐一些可以让我学习 SQL 命令的东西吗?
这对于 Stackoverflow 来说几乎是题外话,但是 mysqli 的 PHP 手册可以通过大量示例向您展示如何很好地使用 mysqli API。如果您想学习结构化查询语言本身,那么有大量的外部资源,包括 MySQL 的文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)