PHP 7.2 password_verify() 在请求数据库后不工作
PHP 7.2 password_verify() not working after request to database
我正在测试新的 php 加密算法 (Argon2),当我从数据库中收集数据时它给我带来了问题。我正在显示下面的代码,password_verify ()
总是 returns false.
设置密码:
function setpass($pass, $cryp){
global $conn;
$qry="UPDATE users SET pass=:pass WHERE cryp LIKE :cryp";
$result=$conn->prepare($qry);
$password=password_hash($pass, PASSWORD_ARGON2I);
$result->bindParam(':pass', $password);
$result->bindParam(':cryp', $cryp);
$result->execute();
header("Location: http://localhost/intranet/login.php");
}
登录:
function login($nick, $pass){
global $conn;
$qry="SELECT id, pass FROM users WHERE nick LIKE :nick";
$result=$conn->prepare($qry);
$result->bindParam(':nick', $nick);
$result->execute();
$user=$result->fetch();
if(password_verify($pass, $user['pass'])){
setcookie("user_id", $user['id'], time()+432000);
setcookie("user_nick", $user['nick'], time()+432000);
header("Location: xxxx");
}
else{
var_dump("ERROR");
}
}
唯一失败的是 password_verify
函数。哈希在数据库中插入得很好,如果我尝试在同一页面上使用测试字符串执行哈希和 password_verify
,如果它运行良好的话。编码就像数据库中的 utf-8
和我的 .php
我遇到了同样的问题,为我解决的是向 password_hash 函数添加选项
像这样
$options = $options = [
'memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST,
'time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST,
'threads' => PASSWORD_ARGON2_DEFAULT_THREADS,
];
$password2 = password_hash('1234567890', PASSWORD_ARGON2I, $options);
之后就完美运行了
我正在测试新的 php 加密算法 (Argon2),当我从数据库中收集数据时它给我带来了问题。我正在显示下面的代码,password_verify ()
总是 returns false.
设置密码:
function setpass($pass, $cryp){
global $conn;
$qry="UPDATE users SET pass=:pass WHERE cryp LIKE :cryp";
$result=$conn->prepare($qry);
$password=password_hash($pass, PASSWORD_ARGON2I);
$result->bindParam(':pass', $password);
$result->bindParam(':cryp', $cryp);
$result->execute();
header("Location: http://localhost/intranet/login.php");
}
登录:
function login($nick, $pass){
global $conn;
$qry="SELECT id, pass FROM users WHERE nick LIKE :nick";
$result=$conn->prepare($qry);
$result->bindParam(':nick', $nick);
$result->execute();
$user=$result->fetch();
if(password_verify($pass, $user['pass'])){
setcookie("user_id", $user['id'], time()+432000);
setcookie("user_nick", $user['nick'], time()+432000);
header("Location: xxxx");
}
else{
var_dump("ERROR");
}
}
唯一失败的是 password_verify
函数。哈希在数据库中插入得很好,如果我尝试在同一页面上使用测试字符串执行哈希和 password_verify
,如果它运行良好的话。编码就像数据库中的 utf-8
和我的 .php
我遇到了同样的问题,为我解决的是向 password_hash 函数添加选项
像这样
$options = $options = [
'memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST,
'time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST,
'threads' => PASSWORD_ARGON2_DEFAULT_THREADS,
];
$password2 = password_hash('1234567890', PASSWORD_ARGON2I, $options);
之后就完美运行了