2011-09-10 36 views
0

在我的PHP應用程序中,我試圖區分未設置的會話變量由於實際錯誤或由於某些不屬於我的錯誤的情況(即用戶註銷或手動鍵入URL)。顯然,我只想記錄錯誤。現在我記錄了兩者的錯誤,我不知道哪個是哪個。確定是否缺少會話變量是由於錯誤(PHP)

是否有一些普遍接受的方式來處理這類事情?我很好奇聽到其他人如何接近這種情況。在創建會話時

感謝布

回答

2

將所有會話變量以一個理智的默認值。如果在以後的任何時候你發現一個未設置的會話變量,這是一個錯誤。

如果用戶註銷,那並不意味着他們沒有會話(或者應該不意味着,如果您的會話處理與大多數實現類似)。手動輸入URL也是一樣。在某些情況下,您的應用的內部框架必須在全部頁面視圖中執行session_start()。這是注入默認設置的好地方。

注入默認是死很容易與陣列聯合運營:

$defaults = array(
    'userid' => null, 
    'lang' => 'en', 
); 

session_start(); 
$_SESSION['userid'] = 42; 
$_SESSION += $defaults; // will not overwrite existing values 

print_r($_SESSION); 

See it in action(和請忽略與不能夠設置會話cookie等的警告)。