2017-08-25 50 views
0

我正在嘗試使用PHP,並且我注意到如果使用SESSIONS,它們會在關閉瀏覽器窗口時過期。使用session.cookie_lifetime保持會話關閉瀏覽器窗口不好嗎?

我在這裏搜索,他們說你可以使用session.cookie_lifetime,但不建議持續太久。我的問題是。例如,這樣的網站,或reddit或Facebook。他們有一個「記住我」按鈕,因此關閉瀏覽器時會話沒有關閉。他們如何實現這一目標?

在此先感謝!

回答

0

會話的目的是在關閉瀏覽器時關閉。如果你不想要這種行爲,你應該使用cookie而不是會話。查看PHP中的setcookie()函數。這將允許您創建一個會持續很長時間(甚至幾年)的cookie,並且對於長時間持久的數據非常理想,比如「Remember Me?」。功能。

+0

但是,我還讀到,如果我將用戶的信息存儲在cookie中,因爲cookie存儲在瀏覽器中,黑客可以更改cookie。因此,例如,現在當我登錄一個用戶時,該用戶標識存儲在'$ _SESSION ['userId']'變量中。但是,如果我使用cookie來做到這一點,那麼黑客可以像任何其他用戶一樣更改標識並登錄。我在這裏錯過了一些東西,但我不知道它是什麼。 – nick

+0

您不希望存儲這樣的敏感數據,這些數據可以被某人修改爲可預測的內容。相反,您可以使用令牌。所以你可以爲用戶創建一個隨機標記,然後存儲該標記。如果有人攻擊用戶的計算機並修改了cookie,那麼它就不像用戶ID那樣可預測。相反,這是黑客無法預測的標誌。然後,如果黑客改變了它,最糟糕的情況是用戶不會登錄,但他們無法將其更改爲與其他用戶匹配的內容。 –