可能重复:
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'])