2011-01-05 77 views
1

我在哪裏可以設置默認會話過期時間爲WebsiteBaker?它默認在10分鐘內銷燬。我想在開發期間設置更多分鐘/小時,稍後想要更改爲默認或x MINS。會話在網站baker中過期

請幫我等待你的回覆。

感謝

+0

該文檔沒有說什麼,我敢打賭,你不會在這裏找到許多使用該CMS的編碼器。也許你只是搜索你的代碼庫或詢問[在wsbaker-forum]。(http://www.websitebaker2.org/forum/) – erikbwork 2011-01-05 07:58:42

回答

0

我不知道網站麪包什麼,所以尋找到會話開始(在你的項目搜索在session_start()中的所有文件),然後在該行之前,你可以使用:

//first parameter expects the number of seconds session cookie should be kept by the 
//browser , in our case 10 seconds 
session_set_cookie_params(10); 

或者另一種選擇,在你的網站上的貝克應用程序(index.php)添加該行,你應該準備好去。

注:如果會話cookie是由瀏覽器destroied那麼PHP將發出另一個會話ID,當你調用session_start();,所以我們並不真的關心,如果上次會議仍然被認爲是活着/活躍在你的PHP腳本你將有一個空的$_SESSION。 Aditionaly,您可以設置ini_set('session.gc-maxlifetime', 10);,以便在將會話存儲在磁盤上時,以前的會話將被垃圾收集器刪除。

+0

['session_cache_expire'](http://php.net/session_cache_expire)只是用於HTTP緩存。 – Gumbo 2011-01-05 08:12:43

+0

更新了答案,謝謝你的支持。 – 2011-01-05 08:18:51

+0

* session.gb \ _maxlifetime *不一定更好(請參閱http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes/1270960#1270960) 。 – Gumbo 2011-01-05 08:27:52

0

我假設你沒有改變它自己(否則我想你會記得你是如何做到的),10分鐘看起來像一個奇怪的默認值。我敢說你在一個共享服務器上託管你的應用程序,會話數據存儲在默認的共享位置,還有一些其他客戶的應用程序設置了較低的會話生命週期。發生此問題是因爲會話數據不是站點感知的:當PHP垃圾收集器刪除10分鐘內未訪問的會話文件時,它將刪除目錄中的所有文件;它無法知道他們屬於哪個網站。

我不能告訴你如何在WebsiteBaker中修復它,但是在普通的PHP中,你需要在你的賬戶中設置一個自定義的會話目錄。然後(只有這樣),你必須在你自己的會話數據的完全控制:

session_save_path('/home/users/foo/sessions'); 
ini_set('session.gc_maxlifetime', 3*60*60); // 3 hours (or whatever you need) 
ini_set('session.gc_probability', 1); 
ini_set('session.gc_divisor', 100); 
session_start(); 
1

Websitebaker至少目前的2.8.2版和2.8.3 upcomming版本完全依靠會話有效期服務器設置。

如果你想不同的會話設置,你可以添加之前設置的config.php文件:

require_once(WB_PATH.'/framework/initialize.php'); 

這隻能如果你的服務器允許通過重寫劇本。

另一種選擇是使用.htaccess文件或更改服務器設置。