是什么引起了这个注意:未定义的索引:
what make this Notice: Undefined index:
我的class中有这个方法:
public function login ( $username, $password )
{
$pdo = parent::getConnection();
$sql = 'SELECT username, pass FROM users
WHERE username = :username';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();
if ( $stmt->rowCount() === 1 ) {
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}else {
Error::setError('', 'Wrong username or password');
return false;
}
}
我已经尝试过这样使用 Isset,但是那个未定义的索引仍然存在:
if (isset($password)){
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}
当我使用 print_r 查看我的变量时,它有一个值。 $用户名来自$_POST['usename'],$密码来自$_POST['password']
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$inputText = [
'username',
'password',
];
$v->required($inputText);
$username = $_POST['username'];
$password = $_POST['password'];
if (count(Error::getError())=== 0 && ($user->login($username,$password))){
http_redirect(admin/index.php);
}
}
您正在从数据库中选择 pass
,但您在 $result
数组中引用 password
。
罪魁祸首:
if (password_verify($password, $result['password'])) {
解决方法:
if (password_verify($password, $result['pass'])) {
我的class中有这个方法:
public function login ( $username, $password )
{
$pdo = parent::getConnection();
$sql = 'SELECT username, pass FROM users
WHERE username = :username';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->execute();
if ( $stmt->rowCount() === 1 ) {
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}else {
Error::setError('', 'Wrong username or password');
return false;
}
}
我已经尝试过这样使用 Isset,但是那个未定义的索引仍然存在:
if (isset($password)){
if (password_verify($password, $result['password'])) {
return true;
} else {
Error::setError('', 'Wrong username or password');
return false;
}
}
当我使用 print_r 查看我的变量时,它有一个值。 $用户名来自$_POST['usename'],$密码来自$_POST['password']
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$inputText = [
'username',
'password',
];
$v->required($inputText);
$username = $_POST['username'];
$password = $_POST['password'];
if (count(Error::getError())=== 0 && ($user->login($username,$password))){
http_redirect(admin/index.php);
}
}
您正在从数据库中选择 pass
,但您在 $result
数组中引用 password
。
罪魁祸首:
if (password_verify($password, $result['password'])) {
解决方法:
if (password_verify($password, $result['pass'])) {