2013-08-31 42 views
0

我想讓會話保持三天,並且每當他們訪問該頁面時,都會再次更新三天。基本上如果他們沒有訪問該網站三天,他們的會議下降。

ini_set('session.cookie_lifetime',60*60*24*3); //saw on a similar SO question 
session_start(); 

上面的代碼段是在top.php的頂部,也就是include() ED每一個單頁上的文件。

$_SESSION["username"] = $username; 
$_SESSION["password"] = $hashedpass; 
$_SESSION["authtoken"] = $authkey; //authentication key 

以上是上的login.php根據它存在於SQL驗證其設定$_SESSION數據。

也許這是WAMP的功能,但是無論何時關閉瀏覽器,儘管php.ini參數被更改,會話也會終止。我可能在top.php的第1行使用了錯誤的位?

+2

您確定會話在服務器端而不是客戶端被終止?許多瀏覽器在關閉時會清除會話。 – TRiG

+0

使用'$ _SESSION'對我來說比較新,所以我不完全確定。我的瀏覽器不會終止我經常訪問的其他網站的會話,所以我很少相信它會選擇性地從我的網站中刪除會話。 – gator

回答

2

使用cookies,我懷疑你可以控制你的會話生存期。

你需要做的是基本上存儲cookie中需要的會話變​​量,並且在用戶進入站點時,如果沒有設置會話變量,檢查是否存在與這些變量相關的cookie並將數據從cookie加載到會話。或者您可以直接從cookies中訪問它們

如果您有不想存儲在Cookie中的敏感數據。您可以將這些數據以某種持久性存儲形式存儲在服務器上(數據庫或文件,數據庫更可取),並將此數據的ID存儲在用戶端的Cookie中。當用戶訪問您的網站時,從cookie中獲取ID並加載數據。

+0

我並不是特別想將敏感數據存儲到cookie中(或者更糟糕的是,讓用戶爲了惡意目的而製作自己的cookie)。我希望完全通過會議來完成。 – gator

+1

剛剛更新了我的答案bro –

+1

@JoshuaKissoon,我應該去DB選項。只是cookie中的'uid'和'expiration date' + DB中一些更需要的信息 – Mathlight

0

我剛剛發現:

ini_set('session.cookie_lifetime', 60*60*24*3); 
ini_set('session.gc_maxlifetime', 60*60*24*3); 
session_start(); 

...工作正常。即使瀏覽器關閉,它仍然保持活動狀態。

+0

但是想想看修復約書亞所給的。在數據庫中保存「會話」非常常見... – Mathlight

相關問題