使用PDO登录脚本有什么问题?

时间:2014-04-28 15:44:10

标签: php mysql pdo

我正在使用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技术它不起作用。

1 个答案:

答案 0 :(得分:1)

password_verify返回一个布尔值。您当前正在将提供的$password与您刚刚生成的哈希相匹配,这无用。

':pass' => $secure

应该是

':pass' => $hash

您无需在此处使用password_verify