[英]Warning: Trying to access array offset on value of type bool
登錄表單工作正常,但是當我輸入錯誤的用戶名時出現錯誤
警告:嘗試訪問 bool 類型值的數組偏移量
我有一個包含以下代碼的登錄表單:
<?php
include('class.password.php');
class User extends Password{
private $db;
function __construct($db){
parent::__construct();
$this->_db = $db;
}
public function is_logged_in(){
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true){
return true;
}
}
private function get_user_hash($username){
try {
$stmt = $this->_db->prepare('SELECT MemberID, username, password FROM admins WHERE username = :username');
$stmt->execute(array('username' => $username));
return $stmt->fetch();
} catch(PDOException $e) {
echo '<p class="error">'.$e->getMessage().'</p>';
}
}
public function login($username,$password){
$user = $this->get_user_hash($username);
if($this->password_verify($password,$user['password']) == 1){
$_SESSION['loggedin'] = true;
$_SESSION['memberID'] = $user['memberID'];
$_SESSION['username'] = $user['username'];
return true;
}
}
public function logout(){
session_destroy();
}
}
?>
這是給出錯誤的行:
if($this->password_verify($password,$user['password']) == 1){
您的問題是當沒有提供用戶名的此類用戶時, get_user_hash
方法將返回false
。 您應該考慮將代碼更改為:
if(!empty($user) && $this->password_verify($password,$user['password']) == 1){
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.