Session的工作方式
發(fā)表時(shí)間:2024-05-21 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]下面我們來(lái)看一下Session是如何工作的。不知你是否知道通過(guò)Cookie來(lái)實(shí)現(xiàn)身份認(rèn)證的吧。首先生成一個(gè)獨(dú)一無(wú)二的Cookie作為用戶(hù)身份的標(biāo)志,并在數(shù)據(jù)庫(kù)中進(jìn)行注冊(cè)。然后通過(guò)用戶(hù)傳遞來(lái)的Cookie和數(shù)據(jù)庫(kù)中注冊(cè)的Cookie進(jìn)行對(duì)照以確定用戶(hù)的身份。 Session的工作原理也是這樣。 ...
下面我們來(lái)看一下Session是如何工作的。不知你是否知道通過(guò)Cookie來(lái)實(shí)現(xiàn)身份認(rèn)證的吧。首先生成一個(gè)獨(dú)一無(wú)二的Cookie作為用戶(hù)身份的標(biāo)志,并在數(shù)據(jù)庫(kù)中進(jìn)行注冊(cè)。然后通過(guò)用戶(hù)傳遞來(lái)的Cookie和數(shù)據(jù)庫(kù)中注冊(cè)的Cookie進(jìn)行對(duì)照以確定用戶(hù)的身份。
Session的工作原理也是這樣。
首先,PHP為建立Session的用戶(hù)產(chǎn)生一個(gè)獨(dú)一無(wú)二的字符串,用來(lái)標(biāo)志這個(gè)用戶(hù)的session。一般將這個(gè)字符串稱(chēng)作Session Id。然后“sess”+Session Id為文件名(例如一個(gè)Session ID為111,那么文件名為sess_111)在服務(wù)器的文件系統(tǒng)中建立一個(gè)文件,在文件中保存用戶(hù)在Session所定義的全局變量的變量名和值。然后再將Session Id作為一個(gè)名為PHPSession的Cookie保存在用戶(hù)端的文件系統(tǒng)中。
然后,當(dāng)用戶(hù)再次連接服務(wù)器訪問(wèn)一個(gè)PHP腳本時(shí),PHP從用戶(hù)發(fā)來(lái)的PEESession這個(gè)Cookie中得到用戶(hù)所在Session的Session Id,并根據(jù)Session Id從服務(wù)器的文件系統(tǒng)中保存Session信息的文件。最后從這個(gè)文件中讀出用戶(hù)在上次連接時(shí)所設(shè)置的全局變量的值。
因此,我們可以看到Session的工作原理和我們上一節(jié)所介紹的身份認(rèn)證的工作原理是一樣的。所不同的只是Session將信息保存在了服務(wù)器的文件系統(tǒng)中,而我們將信息保存在了數(shù)據(jù)庫(kù)中。當(dāng)然使用Session好處就是數(shù)據(jù)的保存和獲取是由PHP自動(dòng)完成的,而直接使用Cookie的話就需要自己動(dòng)手進(jìn)行數(shù)據(jù)的保存和獲取。
Session利用Cookie的身份標(biāo)志功能,將用戶(hù)在瀏覽網(wǎng)站時(shí)需要保存的信息保存在服務(wù)器上。這樣Session既克服了HTTP協(xié)議的缺陷,又防止了信息的泄漏,而且方便了編程者的使用,是一個(gè)非常好的解決方案。不過(guò),Session的功能只有PHP4支持,PHP3是不支持Session的。因此使用PHP3進(jìn)行網(wǎng)站構(gòu)建的讀者只能采用直接使用Cookie的方式。