您好,登錄后才能下訂單哦!
PHP中Session的工作原理是什么?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Session 的工作機制:
為每個訪問者創建一個唯一的 id (UID),并基于這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導。
PHPSESSIONID的生產算法原理:
1、hash_func = md5 / sha1 #可由php.ini配置
2、PHPSESSIONID = hash_func(客戶端IP + 當前時間(秒)+ 當前時間(微妙)+ PHP自帶的隨機數生產器)
從以上hash_func(*)中的數據采樣值的內容分析,多個用戶在同一臺服務器時所生產的PHPSESSIONID重復的概率極低。
另外,黑客如果要猜出某一用戶的PHPSESSIONID,則他也必須知道“客戶端IP、當前時間(秒、微妙)、隨機數”等數據方可模擬。
php.ini配置如下:
; Select a hash function for use in generating session ids. ; Possible Values ; 0 (MD5 128 bits) ; 1 (SHA-1 160 bits) ; This option may also be set to the name of any hash function supported by ; the hash extension. A list of available hashes is returned by the hash_algos() ; function. ; http://php.net/session.hash-function session.hash_function=0
PHP Session工作原理
以下以cookie傳輸PHPSESSID描述。
1、客戶端請求一個php的服務端地址。
2、服務端收到請求,此次php腳本中包含session_start()
。
3、服務端會生成一個PHPSESSID
。(默認session存儲方式為session.save_handler=files
,文件形式存儲。生成的session文件名規則即為sess_PHPSESSID
,session文件存在session.save_path
中。)
4、服務端響應首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/
。在客戶端生成一個cookie保存此PHPSESSID
。
5、此時,客戶端的cookie里面包含了PHPSESSID
,之后客戶端的每次請求首部Request Headers
:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
。服務端之后每次接收到客戶端的請求就都能根據這個PHPSESSID
來找到服務端的session文件,通過對這個session文件的讀寫操作即實現了session的超全局變量屬性。
如果客戶端禁用了cookie,由于無法使用cookie傳遞PHPSESSID
,那么客戶端每次請求,服務端都會重新建立一個session文件,而無法通過通過PHPSESSID
來重用session文件,所以session也就失效了。
這種情況可以設置session.use_trans_sid
來傳輸PHPSESSID
,具體實現方式與cookie的區別就是將PHPSESSID
通過HTTP的GET
傳輸。每次請求的地址里面都會補全PHPSESSID參數”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
”來實現。
PHPcli模式通過session_id()使用session
可以通過它來獲取當前會話的PHPSESSID,也可以通過它來設置當前的會話PHPSESSID。
PHPcli模式下可以通過設置這個,達到使用session的目的,非常方便。
例如:
<?php // session_id('vingbrv8m64asth0nhplu9gmb7'); session_start(); $_SESSION[md5(rand(100,999))] = rand(100,999); var_dump($_SESSION);
關于PHP中Session的工作原理是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。