2011-03-03 100 views
1

我有一個問題給你。php自定義錯誤處理

在我的網站,我有以下的錯誤報告級別

// PHP errors that will be reported when the script is run. 
error_reporting(0); 

問題是,當會話超時,我得到了一個空白頁面,用戶必須輸入地址再次轉到主頁,登錄。

有沒有一種方法可以嵌入到上面的代碼的鏈接,所以當會話超時它會回顯一個鏈接到主頁面?

我試圖

// PHP errors that will be reported when the script is run. 
error_reporting(0); 
echo ("index.php"); 

,沒有運氣, 任何想法?

謝謝。 :)

回答

2

如果用戶的會話已過期,您的會話檢查代碼應該對您的登錄頁面執行HTTP重定向。

session_start(); 

// Check if User is logged in 
if (!isset($_SESSION['current_user'])) { 
    header("Location: http://example.com/login"); 
    exit; 
} 

// Code to run when a User is logged in 

.... 
+0

我該怎麼做?如果你不介意我問? – Trey 2011-03-03 05:49:37

+0

檢查您在會話中存儲的數據,如果未設置,請使用header()將「位置」標題發送回瀏覽器。 – Stephen 2011-03-03 05:55:37

0

哦,親愛的。

> error_reporting(0); 

錯誤應該始終報告 - 但你應該設置的display_errors到「關」的生產系統。

> so when the session times out... 

會話超時會不會引發錯誤。要麼是您的代碼觸發錯誤,要麼是您正在討論請求超時。 (如果你沒有禁用錯誤報告,你可能已經能夠自己解決這個問題了)。

斯蒂芬已經提供瞭如何檢查無效的會話狀態的例子,但是從你自己的代碼引發錯誤並不一定是壞事,只要你趕上他們提供了一種機制 - 見set_error_handler