日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入理解session过期机制

發布時間:2023/12/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解session过期机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先得明白:session的過期時間由兩方面決定的;?
?1存儲在客戶端的$_COOKIE['PHPSESSID']的過期時間(默認cookie名稱為PHPSESSID,可通過php.ini中的session.name修改。)?
?2.存儲在服務器端的相對應的session文件(session文件名和上述cookie的值一一對應),默認為1440秒,即24分鐘?

ok,現在詳細闡述上述兩者的關系:? 當執行session_start()的時候 ,其實是做了兩件事:? 1, 檢查客戶端發送過來的的所有cookie(當然也包括$_COOKIE['PHPSESSID'],? 如果有的話 ),根據$_COOKIE['PHPSESSID']的值(這是由apache產生的隨機字符串,如0lkbd2se458r600m2m7o1r4ic5)來訪問? 相對應 的 session文件(如:sess_0lkbd2se458r600m2m7o1r4ic5,我的默認存儲在‘E:\wamp\tmp’下),這兩者是一 一對應的關系。打個比喻:$_COOKIE['PHPSESSID']就是一把開啟寶盒的鑰匙,而那個寶盒就是session文件,里面存儲著用戶的重要 信息,也就是session的值, 如:$_SESSION['uid']=1,$_SESSION['username']='name',$_SESSION['pwd']='pwd', 當然文件里面的值是經過序列化的。? 2, 如果客戶端沒有傳來$_COOKIE['PHPSESSID'],就會有服務端產生一個隨機的$_COOKIE['PHPSESSID']并存儲在客戶端。?

明白上面這些,我們可以通過下面的方法修改session的過期時間:?
1.session_set_cookie_params('50');//修改$_COOKIE['PHPSESSID'],的生存時間為50秒 ?

(或者可以這樣: ? setcookie(session_name(),session_id(),time()+50);) ?

2.ini_set('session.gc_maxlifetime','50');//設置session文件的有效時間為50秒 ?

但是 ,可能有些朋友會做這樣? 一個試驗 , 在50秒內獲取$_COOKIE['PHPSESSID']的值并記錄下來(如黑客截獲這個cookie),這樣等50秒過后發現原先 的$_COOKIE['PHPSESSID']值確實不存在了,而出現了一個新的$_COOKIE['PHPSESSID'],但是‘E:\wamp \tmp’下的舊session文件卻沒有消失(默認只有1/1000的概率會消失,應該不會碰到吧,呵呵),這是為什么呢?我不是已經設置了? .ini_set('session.gc_maxlifetime','50');了 嗎?再做一個實驗:這時你偽造一個$_COOKIE['PHPSESSID'],值為剛才你記錄下的,神奇的事發生了,你依然可以訪問剛才舊的 session文件!!!(雖然他已經過期),只要這個文件沒被刪除,用相對應得$_COOKIE['PHPSESSID']依然可以進行訪問!!! ?

那我們設置ini_set('session.gc_maxlifetime', '50');還有什么意義呢 ?這就涉及的GC(GarbageCollector)的回收機制。?
?默 認情況下,session.gc_probability = 1,session.gc_divisor=1000,也就是說有1/1000的可能性會啟動GC。GC的工作,就是掃描所有的session信息,用當 前時間減去session的最后修改時間(modifieddate),同session.gc_maxlifetime參數進行比較,如果生存時間已經 超過gc_maxlifetime,就把該session刪除。只要沒有啟動GC,即使session過期,也仍舊可通過相對應 得$_COOKIE['PHPSESSID']進行訪問!?
???
原文參考:? http://www.jb51.net/article/26890.htm ?
????????????????? http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0621/10583.html

總結

以上是生活随笔為你收集整理的深入理解session过期机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。