2009-07-24 57 views
1

我使用app_error腳本來處理我的網站上斷開的鏈接,並在error404()動作,我寫這樣的會話值:閱讀時段值()蛋糕PHP

$this->controller->Session->write("visitor", $visitorId); 

這所有的作品,因爲我可以成功地讀取會話,如果我重新加載app_error。 一次,我已經寫了這個會話值我重定向到一個控制器:

$this->controller->redirect($redirectURL,301);  

什麼,然後我試圖做的是在app_controller的beforeFilter()回調來檢查該會話值,但它只是似乎並不能夠檢測到這個值。我試過

$this->Session->read("visitor"); 

它不檢索任何東西。我也嘗試過檢查方法。

任何人都可以在這裏看到任何明顯的東西嗎?我調試設置爲0(生產),所以它默認使用error404()。

+0

也許這可能有所幫助:http://stackoverflow.com/questions/1252067/cakephp-problems-with-errorhandler-not-extending-appcontroller – 2009-08-11 15:14:05

回答

1

人力資源管理模式。你的整個會話是被破壞還是你無法讀取這個索引?我假設你的整個會議正在被摧毀。您正在重定向到同一網域的網頁(和子網域,如果適用)?大多數情況下,當我遇到類似這樣的問題時,必須與蛋糕積極摧毀會話,特別是如果您的Security.level設置爲高/中。

如果您的會話確實被破壞,請確保這兩個域都是相同的。如果已經是這種情況,請嘗試將安全級別降低到低以確保您不會被session.referer_check捕獲。

否則,您應該一定能夠從beforeFilter()中的會話讀取。

2

嘗試設置這樣的會話值:

$this->Session->write("VisitorInfo.visitor","value"); 

那麼你不會有使用從app_controller閱讀它的任何問題:

$this->Session->read('VisitorInfo');