2015-04-23 77 views
0

如果用戶在我的網站上登錄,相關的檢查會經歷登錄,包括創建一個$ _SESSION,但是當他們瀏覽網站時,它會明顯檢查他們是在加載他們導航到的下一頁時仍然登錄。PHP - 在頁面重新加載後檢查用戶憑據

目前,此檢查的代碼是:

$users = blueFactory::create('blueUsers',$db, $core); 

session_start(); 
if(isset($_SESSION['login']['username']) && isset($_SESSION['login']['hash'])) 
{ 
    $userN = $_SESSION['login']['username']; 
    $userH = $_SESSION['login']['hash']; 
    if($users->CheckUser($userN, $userH) > 0) 
    { 
     define('LOGGED_IN',true); 
     define('USER_ID',$users->Name2id($userN)); 
     define('USER_NAME',$users->GrabUserVar(USER_ID,"username")); 
     define('USER_HASH',$userH); 
    } 
    else { 
     define('LOGGED_IN',false); 
     define('USER_ID',0); 
     define('USER_NAME','Guest'); 
     define('USER_HASH',0); 
     session_destroy(); 
    } 
} 
else { 
    define('LOGGED_IN',false); 
    define('USER_ID',0); 
    define('USER_NAME','Guest'); 
    define('USER_HASH',0); 
} 

的用戶 - $> checkUser()函數將在每次重新加載頁面時檢查數據庫,會話信息是否正確。

我的問題是,我覺得有更好的方法來編寫上面的代碼,但我不知道它將如何完成!我正在尋找更好的方式來編寫登錄檢查,而用戶瀏覽網站(並已登錄)。

感謝您的幫助

+0

這可能只是個人喜好,但使用'定義()'可能不是一個不錯的選擇。根據經驗,'define()'用於不會改變的內容。爲什麼不讓所有這些變量都可以通過任何需要或包含此代碼的代碼訪問? –

回答

0

驗證您的常量已經定義,如(提前!):

... 

if (defined('LOGGED_IN')) { // exists? 
    if (!LOGGED_IN) { // if false, keep doing .. 
... code and more code ... 
} 

... 
相關問題