2016-04-04 24 views
1

嗨,我有一個問題,我仍然認爲自己在編碼方面很新穎,所以如果我愚蠢,請原諒我。試圖回顯值時出現未定義的索引錯誤,我正在使用類之外的函數

我現在在學校學習,我們有一個項目來構建craigslist的完整堆棧娛樂。任何我遇到的問題都與PHP有關。我創建了一個包含文本區域的帳戶頁面。我想回顯用戶的信息,以便用戶可以看到他所喜歡的內容並進行更新。由於我的導航欄被包含在每一頁上,我加入了代碼:

if(isset($_SESSION['logged_in_user'])){ 
     var_dump($_SESSION['logged_in_user']); 
     $user = $_SESSION['logged_in_user']; 
     var_dump($user); 
} 

我的帳戶頁面上我想我可以重複它作爲佔位符內 <?= $attributes['first_name']?>。不過,我不斷收到:

未定義指數:FIRST_NAME

還當我var_dump($user)我得到一個受保護的屬性$陣列。

在我Auth類是我第一次定義$user這樣:

public static function attempt($attemptedUsername, $attemptedPassword) { 

$user = User::findByUserName($attemptedUsername); 
    if ($user == null) { 
     return false; 
    } 

    $validPassword = password_verify($attemptedPassword,$user->password); 
    if ($validPassword == true) { 
     $_SESSION['logged_in_user'] = $user;    
    }  
    return false;  
} 

和我findByUserName功能是在用戶類。代碼:

public static function findByUserName($user_name){ 

     // Get connection to the database 
     self::dbConnect(); 

     $stmt = self::$dbc->prepare('SELECT * FROM users WHERE user_name = :user_name'); 

     $stmt->bindValue(':user_name', $user_name , PDO::PARAM_STR); 

     //execute gets its own line, t or false 
     $stmt->execute(); 

     $result=$stmt->fetch(PDO::FETCH_ASSOC); 

     // @TODO: Create select statement using prepared statements 

     // @TODO: Store the result in a variable named $result 

     // The following code will set the attributes on the calling object based on the result variable's contents 
     $instance = null; 
     if ($result) { 
      $instance = new static($result); 
     } 
     return $instance; 
    } 
+0

更多代碼請?? –

+0

如果數組受到保護,這意味着它將在最初聲明的類/方法之外無法訪問。是否在聲明的類/方法內回顯該值?另外,在腳本的頂部用'error_reporting(-1)'打開錯誤報告;' –

+0

@SantoshRamKunjir我更新了我的問題,以便您可以看到更多我的代碼。我回應課堂以外的價值。 – bezotic

回答

0

您的問題似乎是不能夠訪問靜態方法attempt()這可以通過在方法attempt()這樣的開頭全球聲明變量固定的變量$user外:

public static function attempt($attemptedUsername, $attemptedPassword) { 

global $user; 
$user = User::findByUserName($attemptedUsername); 
    if ($user == null) { 
     return false; 
    } 

    $validPassword = password_verify($attemptedPassword,$user->password); 
    if ($validPassword == true) { 
     $_SESSION['logged_in_user'] = $user; 

    } 

    return false; 


} 

有關更多信息,請參閱PHP文檔here

相關問題