我正在使用PDO并且登录脚本不起作用?
主要原因是password_verify
与实际密码不匹配。
<?php session_start();
include 'conn.php';
if(isset($_POST) && count($_POST)>0)
{
$user = $_POST['user'];
$pass = $_POST['pass'];
$option=array('cost'=>12);
$hash=password_hash($pass,PASSWORD_BCRYPT,$option);
$secure = password_verify( $pass,$hash); // $secure=hash('sha512',$pass);
$query ="SELECT * FROM signup WHERE Username=:users AND Password=:pass";
$result = $conn->prepare($query);
$result->execute(array(':users' => $user,':pass' => $secure));
$res=$result->fetchColumn();
if($res>0)
{
// Set username session variable
$_SESSION['user'] = $user;
// Jump to secured page
header('location:index.php');
}//endif
else
{
header('Location:signin.php');
}
}
?>
如果我使用hash("algo',$var)
,那么脚本就可以了,但是使用标准的php 5.5技术它不起作用。
答案 0 :(得分:1)
password_verify
返回一个布尔值。您当前正在将提供的$password
与您刚刚生成的哈希相匹配,这无用。
':pass' => $secure
应该是
':pass' => $hash
您无需在此处使用password_verify
。