2011-04-01 132 views
1

在某些網站上,例如臉書,Gmail,YouTube等,您可以勾選此選項(或者默認情況下就是這樣),無限登錄,直到您註銷爲止。無限次登錄/會話?

你可以回來幾天,你仍然登錄。這是如何工作的?

我與session_start();工作和存儲,例如,用戶數據

$_SESSION['user']['id'] = 40;

如何改變這種代碼,以便直到他們決定註銷我的用戶可以保持登錄狀態?

+1

它通過設置包含用於重新創建用戶會話的一些數據(基本上重新記錄它們)的cookie來工作。它不能通過擴展本地php的會話生命週期來工作,還有更多的事情需要創建一個系統,讓您保持無限期登錄。 – 2011-04-01 09:13:25

+1

可能重複: http://stackoverflow.com/questions/3128985/php-loginsystem-remember-me http://stackoverflow.com/questions/1354999/keep-me-logged-in最好的方法 – Zakaria 2011-04-01 09:13:25

回答

0

您可以將用戶信息存儲在cookie中,以便它們一直保留,直到您需要爲止。並且每次用戶訪問您的網站時,都可以檢查它,並根據您的Cookie信息初始化新會話。

setcookie(name,value,expire,path,domain,secure) 
0

如果我在PHP配置文件中回憶你可以在會話有效期設置爲0,但是當用戶存在他們的瀏覽器會話將到期。

您將不得不使用setcookie()並設置9999999(116天)這樣的過期時間。客戶端cookie與會話的問題在於「客戶端」cookie不適合存儲密碼哈希等敏感項目。

+0

Cookie的生命週期與會話的生命週期無關。請參閱[我的答案是「如何在30分鐘後過期PHP會話?」](http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-分鐘/ 1270960#1270960)。 – Gumbo 2011-04-03 08:36:24