$servername = "localhost";
$username = "user";
$password = "password";
$connection = mysql_connect($servername, $username, $password);
if (!$connection){
die("Connection failed: " .mysqli_connect_error());
}
$connected_db = mysql_select_db('users', $connection);
if (!$connected_db){
die('Can\'t use user database: ' . mysql_error());
}
$result = mysql_query("SELECT pw FROM login WHERE name=\"" . $_POST['username'] . "\"");
登录表如下:
id int(4)
name char(16)
pw char(64)
显然^
不是查询,只是表格内容的摘要
对结束($result = mysql_query("SELECT pw FROM login WHERE name...")
的查询发现用户名很好,密码使用password_hash(password, DEFAULT_PASSWORD)
进行哈希处理并存储在数据库中。但$result['pw']
返回一个空字符串。为什么?我正在尝试从数据库中检索存储的哈希以进行登录,以使用登录表单的POST数据与password_verify进行比较。查询SELECT pw FROM login WHERE name=testuser;
在phpmyadmin
答案 0 :(得分:0)
首先,在开发模式下,将其添加到PHP脚本的顶部:
error_reporting(E_ALL);
ini_set('display_errors', '1');
上面的内容将允许您检查脚本上的错误。
关于您的代码,您很容易受mysql injection攻击
为避免这种情况,请使用php
mysql_real_escape_string函数。
此外,您的双引号是错误的。
您的代码可能如下所示:
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT pw FROM login WHERE name='$username'");