2009-02-06 66 views
0

我已經構建了一個名爲Login的類,該構造可以將它們記入日誌中,也可以不記錄它...我還有一個名爲isAuthenticated的靜態函數,用於檢查用戶是否登錄或不...我一直在靜靜的功能等,但似乎無法得到我想要的東西。用戶用PHP登錄變量

理想的情況下,它會在那裏我可以輕鬆地去

<?php if (Login::isAuthenticated()) { ?> 
<a href="/sign-out/">Sign Out</a> 
<?php } ?> 

這裏是我的課那麼遠,完全與我的嘗試..

class Login 
{ 
    private static $_auth; 

    public function __construct($username, $rawPassword) { 

     global $db; 

     require('edit/users/config.php'); 

     $hashedPassword = sha1(SALT . $_POST['password']); 

     $query = 'SELECT firstname FROM users WHERE user = "' . $db->cleanString($username) . '" AND pass = "' . $db->cleanString($hashedPassword) . '" LIMIT 1'; 


     $login = $db->query($query); 

     if ($login) { 


      $_SESSION['username'] = $username; 
      self::$_auth = true; 



      header('Location: ' . CONFIG_DIR_BASE); 


     } else { 

      ErrorHandler::addErrorToStack('Your username and/or password did not match one on our system. '); 

     } 

    } 



    public static function isAuthenticated() { 



     return self::$_auth; 


    } 







} 

非常感謝您!

+0

這是什麼問題? – 2009-02-06 02:28:47

+0

你究竟想在這裏做什麼。這個問題有點不清楚。 – 2009-02-06 02:38:02

回答

7

由於HTTP是無狀態的,所以你的類的靜態變量($ _auth)在頁面加載之間不會'生存',所以如果你想讓變量保持不變,你需要將它存儲爲Session variable

不過,我會強烈建議您,除非你是真的認真它編寫自己的身份驗證類。有幾十個優秀的PHP認證腳本可供選擇,已經解決了所有的intricacies of web authentication