我有一个问题。我正在使用PHP对我的密码进行哈希处理,但是当我验证它时它给出了以下消息。
注意:未定义的变量:第2行的/opt/lampp/htdocs/test/verify.php中的liXZkG452
失败
我正在解释下面的代码。
hash.php
<?php
$password="subhra123@";
$hash = password_hash($password, PASSWORD_BCRYPT);
echo $hash;
?>
以上echo
正在提供此$2y$10$liXZkG452/DQjB7TsIHEzuJ/ovi0L3.xwN1uYeqt.kFYma33Uu9Wq
值,我将再次在下面的文件中进行比较。
verify.php
<?php
$hash="$2y$10$liXZkG452/DQjB7TsIHEzuJ/ovi0L3.xwN1uYeqt.kFYma33Uu9Wq";
$password="subhra123@";
if (password_verify($password, $hash)) {
echo 'login';
}else{
echo 'Failed';
}
?>
上述功能给了我这个问题。请帮我解决这个问题。
答案 0 :(得分:1)
您需要在$hash
变量周围使用单引号字符串而不是双引号字符串,因为PHP会将$
解释为双引号字符串中的变量标识符。然后它会假设接下来的是变量名称(这就是为什么你得到“ Undefined variable .. ”的通知)。字符串中前两个$
实例不会被这样处理,因为它不是有效的变量名(以数字开头)。
下面会输出“login”,因为$hash
现在引用了单引号。
$hash = '$2y$10$liXZkG452/DQjB7TsIHEzuJ/ovi0L3.xwN1uYeqt.kFYma33Uu9Wq';
$password = "subhra123@";
if (password_verify($password, $hash)) {
echo 'login';
} else {
echo 'Failed';
}