password_verify return 数据库为假但网站为真?
password_verify return false from database but true from site?
我需要一点帮助。我真的不明白为什么它们不都返回 "true"。我的 ID 为 6 的测试用户使用 "test" 作为密码。该值是我创建他时存储的。
我知道这两个散列值不一样,但似乎每个人都可以在 Whosebug 上这样做:)
<?php
require_once 'includes/database.php';
require_once 'includes/connection.php';
$sql_1 = 'SELECT * FROM anew_users WHERE user_id = 6';
$result_1 = $conn->query($sql_1);
while($row = $result_1->fetch_assoc()) {
$password = $row["user_password"];
}
$submittedPassword = "test";
echo $password . "<br>";
echo $submittedPassword . "<br>";
$verify = password_verify($submittedPassword, $password);
echo var_dump($verify);
$password = hashPassword('test');
$submittedPassword = "test";
echo $password . "<br>";
echo $submittedPassword . "<br>";
$verify = password_verify($submittedPassword, $password);
echo var_dump($verify);
输出为:
//OUTPUT
y$aAHYMEvpW2o9ZRsD0XN2XOpYz.dmuqj5v4UdAPIZX9Eo0SW0NjGRe
test
bool(false)
y$.srmofPee5SWV6nmOy0PAOIlzoJPT0SBnzNN0QkYZKlpk3LzgI7F.
test
bool(true)
我用这段代码创建了密码:
function hashPassword($string) {
$output = password_hash($string, PASSWORD_DEFAULT, ['cost' => 10]);
return $output;
}
$user_password = escape($_POST["user_password"]);
$user_passwordhashed = hashPassword($user_password);
提前致谢。
更新转义函数
function escape($string) {
$string = trim($string);
$string = stripslashes($string);
$string = htmlspecialchars($string);
return $string;
}
经过哈希处理并存储在数据库中的密码不是test
,而是一个空字符串。
$string = '';
$pass = 'y$aAHYMEvpW2o9ZRsD0XN2XOpYz.dmuqj5v4UdAPIZX9Eo0SW0NjGRe';
$output = password_verify($string, $pass);
var_dump($output);
我需要一点帮助。我真的不明白为什么它们不都返回 "true"。我的 ID 为 6 的测试用户使用 "test" 作为密码。该值是我创建他时存储的。
我知道这两个散列值不一样,但似乎每个人都可以在 Whosebug 上这样做:)
<?php
require_once 'includes/database.php';
require_once 'includes/connection.php';
$sql_1 = 'SELECT * FROM anew_users WHERE user_id = 6';
$result_1 = $conn->query($sql_1);
while($row = $result_1->fetch_assoc()) {
$password = $row["user_password"];
}
$submittedPassword = "test";
echo $password . "<br>";
echo $submittedPassword . "<br>";
$verify = password_verify($submittedPassword, $password);
echo var_dump($verify);
$password = hashPassword('test');
$submittedPassword = "test";
echo $password . "<br>";
echo $submittedPassword . "<br>";
$verify = password_verify($submittedPassword, $password);
echo var_dump($verify);
输出为:
//OUTPUT
y$aAHYMEvpW2o9ZRsD0XN2XOpYz.dmuqj5v4UdAPIZX9Eo0SW0NjGRe
test
bool(false)
y$.srmofPee5SWV6nmOy0PAOIlzoJPT0SBnzNN0QkYZKlpk3LzgI7F.
test
bool(true)
我用这段代码创建了密码:
function hashPassword($string) {
$output = password_hash($string, PASSWORD_DEFAULT, ['cost' => 10]);
return $output;
}
$user_password = escape($_POST["user_password"]);
$user_passwordhashed = hashPassword($user_password);
提前致谢。
更新转义函数
function escape($string) {
$string = trim($string);
$string = stripslashes($string);
$string = htmlspecialchars($string);
return $string;
}
经过哈希处理并存储在数据库中的密码不是test
,而是一个空字符串。
$string = '';
$pass = 'y$aAHYMEvpW2o9ZRsD0XN2XOpYz.dmuqj5v4UdAPIZX9Eo0SW0NjGRe';
$output = password_verify($string, $pass);
var_dump($output);