登录密码验证返回未知错误

时间:2012-12-28 18:20:43

标签: php authentication pdo bcrypt

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我已经设置了一个简单的登录脚本,用于对用户进行身份验证,并根据用户名创建会话。我收到一个错误:

  

PHP注意:未定义的索引:/var/www/checklogin.php上的$ password   第51行

我不明白我是如何收到此错误的,因为我在任何地方都没有$ password。我唯一与$password相关的是$row['password'],这是php中字段的名称。有小费吗?这是代码:

//The Select Statement
$query = "SELECT * FROM `users` WHERE username = :username"; 
$query_params = array(':username' => $_POST['username']);
try{
        $stmt = $dbh->prepare($query);
        $result = $stmt->execute($query_params);
}
catch (PDOException $e){
    error_log($e->getMessage());
    die($e->getMessage());
}
$login_ok = false;

//This is password encryption for register_script.php
$Blowfish_Pre = '$2y$17$';
$Allowed_Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./';
$Chars_Len = 63;
$salt = "";
for($x=0;$x<10000;$x++){
    $salt .= $Allowed_Chars[mt_rand(0,$Chars_Len)];
}
$bcrypt = $Blowfish_Pre . $salt; 
$row = $stmt->fetch();
if($row){
    $password_check = crypt($_POST['password'] . $bcrypt);
    if($password_check === $row['password']){
        $login_ok = true;
    }
}       
if($login_ok){
    unset($row['password']);
    $_SESSION['username'] = $row;
    header("Location: login_success.php");
    die ("redirecting to: login_success.php");
}

我的想法是,在验证用户时,必须重新创建salt / hash,在我的情况下,我必须重新创建我如何使用bcrypt来加密我的密码。我真的不知道在项目的哪个角落。

编辑1:第51行是:

if($password_check === $row['password'])

0 个答案:

没有答案