簡體   English   中英

警告:嘗試訪問 bool 類型值的數組偏移量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM