ession 的作業機制:
為每個訪問者創建一個唯一的 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配置如下:
|
1 2 3 4 5 6 7 8 9 |
|
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的目的,非常方便,
例如:
|
1 2 3 4 5 |
|

明確的學習思路能更高效的學習

點擊加入該群學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/116807.html
標籤:PHP
下一篇:PHP陣列具有的特性有哪些
