我想有會話而存在關閉瀏覽器中 所以我用PHP會話和餅乾
session_set_cookie_params(86400 * 60, '/', 'my.domain.com', true, true);
一個永久性的Cookie發送給客戶端(也與安全標誌,因爲這是一個SSL網站) 其中有效期爲2個月。 但是,我看到在閒置x分鐘後,會話變量在服務器上被清除。 我該如何避免這種情況?從本質上講,我希望存儲會話變量,直到餅乾 變爲無效
感謝
我想有會話而存在關閉瀏覽器中 所以我用PHP會話和餅乾
session_set_cookie_params(86400 * 60, '/', 'my.domain.com', true, true);
一個永久性的Cookie發送給客戶端(也與安全標誌,因爲這是一個SSL網站) 其中有效期爲2個月。 但是,我看到在閒置x分鐘後,會話變量在服務器上被清除。 我該如何避免這種情況?從本質上講,我希望存儲會話變量,直到餅乾 變爲無效
感謝
Session變量將繼續存在如下評論,但除非你改變它們的默認行爲,過期會話結束時(即當瀏覽器關閉)。
對於您要完成的任務,您應該將值存儲在$_COOKIE
變量中,而不是$_SESSION
變量。
看到這篇文章:http://buildinternet.com/2010/07/when-to-use-_session-vs-_cookie/
只要PHPSESSID cookie是持久的(並且會話在訪問之間未被GCed),會話變量就會工作。 PHP實際上並不知道瀏覽器何時關閉;如果瀏覽器的另一個實例出現並將其傳遞給同一個cookie,則不會更聰明。 – cHao
對,但對於用戶想要完成的事情,我不相信這種方法是理想的,因爲他希望他們堅持下去。 – adamdehaven
@AdamD我同意 - 這聽起來像是一個更好的常規餅乾用例。將會話留給他們的意圖 - 一次瀏覽會話。 –
設置session.gc_maxlifetime configuration property。
當涉及到可接受的值時,文檔相當稀少,但我不想去兩個月。
通常情況下,將重要數據存儲在數據庫中並將其添加到會話時,如果使用創建一個會話,請記住我的Cookie爲。
爲實際會話留下會話。
隨着會議你正在看兩件事情。直到垃圾收集清除服務器上的會話的時間以及直到cookie過期的時間。
您只更改了cookie過期時間,會話仍會清理乾淨。然而,延長會議並不是解決這個問題的好方法。您的代碼可能會發生變化,最終可能會導致用戶中斷會話。您可能需要使用某種類似於memcached的共享會話存儲,這會在某個最長時間後刪除存儲。
所以解決這個問題的方法是生成一個唯一的一次性Cookie,可以用作替代登錄密鑰。該密鑰將允許用戶登錄類似於用戶名/密碼。一旦它被使用,一個新的被重新生成。
非常好的方法。我會考慮這個 – Thomas
「我想讓會話持續瀏覽器關閉」 - 實際上,這是您想到的實現。你究竟在做什麼?如果您希望讓用戶保持登錄狀態,即「記住我」類型的功能,那麼最好使用(加密的)身份驗證詳細信息存儲單獨的持久性cookie,然後在新會話中重新應用它們。會話並不意味着持久性,這就是爲什麼非持久性cookie也稱爲會話cookie的原因。 – leftclickben
嗨,實際上我正在尋找的功能是記住我 – Thomas