国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何設置一個嚴格30分鐘過期的Session

馬永翠 / 3099人閱讀

第一種回答

那么, 最常見的一種回答是: 設置Session的過期時間, 也就是session.gc_maxlifetime, 這種回答是不正確的, 原因如下:

首先, 這個PHP是用一定的概率來運行session的gc的, 也就是session.gc_probability和session.gc_divisor(介紹參看 深入理解PHP原理之Session Gc的一個小概率Notice), 這個默認的值分別是1和100, 也就是有1%的機會, PHP會在一個Session啟動時, 運行Session gc. 不能保證到30分鐘的時候一定會過期.

那設置一個大概率的清理機會呢? 還是不妥, 為什么? 因為PHP使用stat Session文件的修改時間來判斷是否過期, 如果增大這個概率一來會降低性能, 二來, PHP使用”一個”文件來保存和一個會話相關的Session變量, 假設我5分鐘前設置了一個a=1的Session變量, 5分鐘后又設置了一個b=2的Seesion變量, 那么這個Session文件的修改時間為添加b時刻的時間, 那么a就不能在30分鐘的時候, 被清理了. 另外還有下面第三個原因.

PHP默認的(Linux為例), 是使用/tmp 作為Session的默認存儲目錄, 并且手冊中也有如下的描述:

Note: 如果不同的腳本具有不同的 session.gc_maxlifetime 數值但是共享了同一個地方存儲會話數據,則具有最小數值的腳本會清理數據。此情況下,與 session.save_path 一起使用本指令。 

也就是說, 如果有倆個應用都沒有指定自己獨立的save_path, 一個設置了過期時間為2分鐘(假設為A), 一個設置為30分鐘(假設為B), 那么每次當A的Session gc運行的時候, 就會同時刪除屬于應用B的Session files.

所以, 第一種答案是不”完全嚴格”正確的.
第二種答案

還有一種常見的答案是: 設置Session ID的載體, Cookie的過期時間, 也就是session.cookie_lifetime. 這種回答也是不正確的, 原因如下:

這個過期只是Cookie過期, 換個說法這點就考察Cookie和Session的區別, Session過期是服務器過期, 而Cookie過期是客戶端(瀏覽器)來保證的, 即使你設置了Cookie過期, 這個只能保證標準瀏覽器到期的時候, 不會發送這個Cookie(包含著Session ID), 而如果通過構造請求, 還是可以使用這個Session ID的值.
第三種答案

使用memcache, redis等, okey, 這種答案是一種正確答案. 不過, 很顯然出題者肯定還會接著問你, 如果只是使用PHP呢?
第四種答案

當然, 面試不是為了難道你, 而是為了考察思考的周密性. 在這個過程中我會提示出這些陷阱, 所以一般來說, 符合題意的做法是:

設置Cookie過期時間30分鐘, 并設置Session的lifetime也為30分鐘.

自己為每一個Session值增加Time stamp.

每次訪問之前, 判斷時間戳.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22758.html

相關文章

  • php中session相關設置描述

    摘要:一下大多是網上的資料,自己只是整理了下,如果有錯誤希望能指出,感謝中的相關配置先看下中的相關配置的解釋。啟用此設定可以防止有關通過傳遞會話的攻擊。值為表示直到關閉瀏覽器。例如意味著在每個請求中有的概率啟動進程。 對于session的了解,之前一直沒有仔細研究過,最近遇到了一些問題,需要解決session配置問題,就順便查看了些資料。一下大多是網上的資料,自己只是整理了下,如果有錯誤希望...

    jsdt 評論0 收藏0
  • session和cookie

    摘要:的作用就是為了解決協議無狀態的缺陷所作的努力。的內容主要包括名字,值,過期時間,路徑和域。這種生命期為瀏覽器會話期的被稱為會話。而機制采用的是一種在服務器端保持狀態的解決方案。中的有效期默認分鐘,也就是說,客戶端超過分鐘,當前就會失效。 會話控制是什么? cookie和session都是跟蹤整個會話過程的技術手段。而會話,就是用戶通過瀏覽器和服務器的一次通話。 為什么要有會話控制? 因...

    ruicbAndroid 評論0 收藏0
  • 關于 PHP 中 Session 幾個問題

    摘要:主要被用于保存某個訪問者的數據。服務器給訪問者唯一的鑰匙,這個鑰匙被稱作。例如官方給出的方案對于大量使用或者并發請求的網站而言,這可能是一個嚴重的問題。例如意味著在每個請求中有的概率啟動進程。因此對于不能跟蹤的文件系統也沒問題了。 什么是 Session 在 web 應用開發中,Session 被稱為會話。主要被用于保存某個訪問者的數據。 由于 HTTP 無狀態的特點,服務端是不會記...

    CoyPan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<