2013-03-28 124 views
1

我已經繼承了一個PHP知識庫cms,有一個請求,我延長會話,以便用戶不必長時間重新登錄可以說五天。我在登錄功能中發現,我可以通過添加下面的代碼來擴展cookie最大/終身價值。PHPKB擴展會話

setcookie(session_name(),$_COOKIE[session_name()],time()+3600*24*5); 

我檢查Cookie的開發工具和它延長壽命,但用戶仍然被重定向短短几分鐘不活動後登錄。同樣使用Chromephp擴展,我發現在刷新登錄頁面時將會話對象寫入控制檯日誌時,會話變量爲空。

我在Ubuntu燈服務器上運行我檢查了php.ini中的幾個選項,似乎找不到能延長會話生命週期的選項。另外一個問題是,當多達50個用戶可能使用這個kb時,通過擴展會話,服務器內存和性能會遇到什麼風險。一如既往地感謝任何意見,歡迎。

+0

我的猜測是,還有別的東西過期餅乾..你能發佈一些更多的代碼? – user20232359723568423357842364

回答

1

你爲什麼要設置一個與會話名稱相同的cookie?這根本不會有用。典型的餅乾名稱是PHPSESSID

這就是說,只是延長cookie過期時間實際上並不會延長會話數據在服務器上的時間。

您需要在您的PHP.ini設置中實際設置會話生存期和會話Cookie生存期。請參閱此鏈接到涵蓋如何執行此操作的StackOverflow問題。

How do I expire a PHP session after 30 minutes?

+0

感謝您的反饋我錯誤的印象是,會話cookie正在存儲用戶會話所需的數據,但在一些更多的閱讀php會話使用這個cookie只是爲了存儲會話ID沒有別的。 – vikingben

+1

@vikingben這是正確的PHP會將會話ID與存儲在臨時文件(典型的默認安裝)或其他存儲介質(數據庫等)中存儲的會話數據相關聯,您可以使用自定義會話處理程序定義這些數據。這是會話的一個非常重要的安全方面,會話數據不能在客戶端訪問。 –