我很难在创建的登录页面上验证我的登录凭据。似乎无法识别我为我的帐户创建的密码。它确认存在一个帐户,但似乎与输入的密码和存储的hash_password不匹配。
<?php
include('config.php');
session_start();
if (isset($_POST['Login'])) {
$username = $_POST['username'];
$user_password = $_POST['user_password'];
$query = $connection->prepare("SELECT * FROM user_info WHERE USERNAME=:username");
$query->bindParam("username", $username, PDO::PARAM_STR);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if (!$result) {
echo '<p class="error">Username password combination is wrong!</p>';
}
else {
echo 'here';
echo $user_password;
echo $result['user_password'];
if (password_verify($user_password, $result['user_password'])) {
$_SESSION['user_id'] = $result['ID'];
echo '<p class="success">Congratulations, you are logged in!</p>';
} else {
echo '<p class="error">Username password combination is wrong! 2</p>';
}
}
}
?>
答案 0 :(得分:0)
解决方案是我必须调整password变量的长度。最初是20,很明显,当您对密码进行哈希处理时,其长度明显更长。因此,我只是将密码长度更改为255。
答案 1 :(得分:-1)
password_verify
需要哈希。也许此功能的第二个参数是普通密码或类似的密码。以上效果很好:
$hash = password_hash('test1234', PASSWORD_DEFAULT);
print_r(password_verify('test1234', $hash));