2012-01-23 40 views
0

我設置了一個腳本,我的本地酒吧將用它來向用戶顯示圖像,菜單等的幻燈片。我的URL將接受一個密鑰(uuid),我的腳本將從中查詢數據庫以查找與基於company_id的密鑰。該網站然後將通過JavaScript或jQuery的圖像旋轉。使用延長的會話?

在提供內容之前,我想確保會話或用戶已通過身份驗證,這意味着有一個有效的company_id關聯。

我一直使用$_SESSION變量進行網絡會話。由於不需要超時,所以我可以在php.ini中設置任何標誌以便永不超時?或者在這類工作中使用cookie會更有益處?

謝謝。

+0

你可能想看看這個問題:http://stackoverflow.com/q/5577106/82447 – klennepette

回答

1

您可能最好使用cookie來存儲遠程失效日期的用戶的登錄令牌,以便它們自動登錄。無限期保留$_SESSION會導致會話文件堆積在服務器上浪費資源文件系統。相反,cookie可以包含一些與數據庫中的用戶關聯的令牌(不可猜測的值)。基本信息可以從數據庫中檢索,然後在用戶返回時檢索。

1

當您撥打session_start()時,腳本會嘗試在包含會話ID的用戶瀏覽器中設置一個cookie,不需要手動設置一個持有「不可猜測的值」的cookie,因爲這是會話id的假設無論如何。

您可以在ini文件中更改session.cookie-lifetime(甚至可以使用ini_set())以防止cookie在會話結束時超時。

保存$_SESSION而不是導致會話文件無限地堆積。通過使會話保持活動狀態,相同的文件將被重複使用(因爲它以會話ID命名),並且會話垃圾回收器中構建的PHP無論如何都會清除死循環。

雖然一般來說,讓會話永遠持續下去是個不錯的主意,因爲這是您當地的酒吧,我懷疑有人會嘗試劫持他們的會話。 (即使他們做到了,他們都會得到什麼是星期天的午餐吧?):)

編輯: 您也可以定期重新生成會話ID,增加更多的安全性。