欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中Session ID的實現(xiàn)原理實例分析

 更新時間:2019年08月17日 08:25:54   作者:opensmarty  
這篇文章主要介紹了PHP中Session ID的實現(xiàn)原理,結(jié)合實例形式分析了PHP中session的工作機制、調(diào)用原理、配置方法及使用技巧,需要的朋友可以參考下

本文實例講述了PHP中Session ID的實現(xiàn)原理。分享給大家供大家參考,具體如下:

Session 的工作機制是:為每個訪問者創(chuàng)建一個唯一的 id (UID),并基于這個 UID 來存儲變量。UID 存儲在 cookie 中,亦或通過 URL 進行傳導(dǎo)。

PHPSESSIONID的生產(chǎn)算法原理如下:

hash_func = md5 / sha1 #可由php.ini配置

PHPSESSIONID = hash_func(客戶端IP + 當(dāng)前時間(秒)+ 當(dāng)前時間(微妙)+ PHP自帶的隨機數(shù)生產(chǎn)器)

從以上hash_func(*)中的數(shù)據(jù)采樣值的內(nèi)容分析,多個用戶在同一臺服務(wù)器時所生產(chǎn)的PHPSESSIONID重復(fù)的概率極低(至少為百萬份之一),設(shè)想,但臺動態(tài)Web Server能到2000/rps已經(jīng)很強悍了。

另外,黑客如果要猜出某一用戶的PHPSESSIONID,則他也必須知道“客戶端IP、當(dāng)前時間(秒、微妙)、隨機數(shù)”等數(shù)據(jù)方可模擬。

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的服務(wù)端地址。

2. 服務(wù)端收到請求,此次php腳本中包含session_start()。

3. 服務(wù)端會生成一個PHPSESSID。(默認session存儲方式為session.save_handler=files,文件形式存儲。生成的session文件名規(guī)則即為sess_PHPSESSID,session文件存在session.save_path中。)

4. 服務(wù)端響應(yīng)首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/。在客戶端生成一個cookie保存此PHPSESSID。

5. 此時,客戶端的cookie里面包含了PHPSESSID,之后客戶端的每次請求首部Request Headers:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。服務(wù)端之后每次接收到客戶端的請求就都能根據(jù)這個

PHPSESSID來找到服務(wù)端的session文件,通過對這個session文件的讀寫操作即實現(xiàn)了session的超全局變量屬性。

如果客戶端禁用了cookie,由于無法使用cookie傳遞PHPSESSID,那么客戶端每次請求,服務(wù)端都會重新建立一個session文件,而無法通過通過PHPSESSID來重用session文件,所以session也就失效了。

這種情況可以設(shè)置session.use_trans_sid來傳輸PHPSESSID,具體實現(xiàn)方式與cookie的區(qū)別就是將PHPSESSID通過HTTP的GET傳輸。每次請求的地址里面都會補全PHPSESSID參數(shù)”url?

PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50”來實現(xiàn)。

【PHPcli模式通過session_id()使用session】

可以通過它來獲取當(dāng)前會話的PHPSESSID,也可以通過它來設(shè)置當(dāng)前的會話PHPSESSID。

PHPcli模式下可以通過設(shè)置這個,達到使用session的目的,非常方便。

例如:

<?php
// session_id('vingbrv8m64asth0nhplu9gmb7');
session_start();
$_SESSION[md5(rand(100,999))] = rand(100,999);
var_dump($_SESSION);

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php緩存技術(shù)總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP錯誤與異常處理方法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

  • Mac OS下配置PHP+MySql環(huán)境

    Mac OS下配置PHP+MySql環(huán)境

    本文詳細介紹了在mac OS系統(tǒng)下安裝配置PHP+MySql環(huán)境的詳細步鄹,十分的全面,這里推薦給有相同需求的小伙伴們。
    2015-02-02
  • PHP實現(xiàn)的抓取小說網(wǎng)站內(nèi)容功能示例

    PHP實現(xiàn)的抓取小說網(wǎng)站內(nèi)容功能示例

    這篇文章主要介紹了PHP實現(xiàn)的抓取小說網(wǎng)站內(nèi)容功能,涉及php頁面抓取、正則匹配、文件讀寫等相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • php寫入mysql中文亂碼的實例解決方法

    php寫入mysql中文亂碼的實例解決方法

    在本文里小編給大家整理的是關(guān)于php寫入mysql中文亂碼的解決方法和知識點,有需要的朋友們參考下。
    2019-09-09
  • PHP批量生成圖片縮略圖的方法

    PHP批量生成圖片縮略圖的方法

    這篇文章主要介紹了PHP批量生成圖片縮略圖的方法,涉及php針對圖片屬性操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • PHP中創(chuàng)建圖像并繪制文字的例子

    PHP中創(chuàng)建圖像并繪制文字的例子

    這篇文章主要介紹了PHP中創(chuàng)建圖像并繪制文字的例子,在圖像中顯示的文字也需要按坐標(biāo)位置畫上去,在PHP中不僅支持比較多的字體庫,而且提供了非常靈活的文字繪制方法,需要的朋友可以參考下
    2014-11-11
  • 利用PHP擴展vld查看PHP opcode操作步驟

    利用PHP擴展vld查看PHP opcode操作步驟

    首先下載最新版vld擴展接下來編譯安裝vld擴展最后將生成的vld.so復(fù)制到extension_dir目錄下然后修改php.ini文件接下來創(chuàng)建test.php文件,感興趣的你可以參考下本文
    2013-03-03
  • 令PHP初學(xué)者頭疼十四條問題大總結(jié)

    令PHP初學(xué)者頭疼十四條問題大總結(jié)

    今天為大家奉上令PHP初學(xué)者頭疼問題大總結(jié),下面提出的14個問題希望對PHP初學(xué)者有所幫助。
    2008-11-11
  • PHP使用內(nèi)置函數(shù)生成圖片的方法詳解

    PHP使用內(nèi)置函數(shù)生成圖片的方法詳解

    這篇文章主要介紹了PHP使用內(nèi)置函數(shù)生成圖片的方法,結(jié)合實例形式詳細分析了php生成圖片的步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-05-05
  • 簡單實現(xiàn)php上傳文件功能

    簡單實現(xiàn)php上傳文件功能

    這篇文章主要教大家如何簡單實現(xiàn)php上傳文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • php跨域檢測類允許部分域名訪問的示例詳解

    php跨域檢測類允許部分域名訪問的示例詳解

    PHP跨域檢測類是一種封裝了跨域檢測邏輯的PHP類,它可以用于在PHP應(yīng)用程序中檢測和處理跨域請求,以確保安全和正常的跨域通信,本文給出了示例給大家介紹php如何允許部分域名訪問,需要的朋友可以參考下
    2023-12-12

最新評論