摘要:會(huì)話控制協(xié)議是服務(wù)器與瀏覽器相互通信的協(xié)議,它是一種無(wú)狀態(tài)協(xié)議,即每個(gè)請(qǐng)求之間是相互獨(dú)立的。因此,協(xié)議沒(méi)有一個(gè)內(nèi)建的機(jī)制來(lái)維護(hù)兩個(gè)事務(wù)之間的狀態(tài)。這就是會(huì)話控制技術(shù)。每一個(gè)文件,里面保存了一個(gè)會(huì)話的數(shù)據(jù)。此時(shí)可以采用等緩存系統(tǒng)。
會(huì)話控制
HTTP 協(xié)議是 WEB 服務(wù)器與瀏覽器相互通信的協(xié)議,它是一種無(wú)狀態(tài)協(xié)議,即每個(gè) HTTP 請(qǐng)求之間是相互獨(dú)立的。因此,HTTP 協(xié)議沒(méi)有一個(gè)內(nèi)建的機(jī)制來(lái)維護(hù)兩個(gè)事務(wù)之間的狀態(tài)。比如,當(dāng)一個(gè)用戶在請(qǐng)求一個(gè)頁(yè)面后再去請(qǐng)求另外一個(gè)頁(yè)面時(shí),HTTP 將無(wú)法告訴我們這兩個(gè)請(qǐng)求是否來(lái)自同一個(gè)用戶。
在網(wǎng)站中,我們經(jīng)常需要跟蹤一個(gè)變量:通過(guò)對(duì)變量的跟蹤,使多個(gè)請(qǐng)求事物之間建立聯(lián)系,再根據(jù)授權(quán)和用戶身份顯示不同的內(nèi)容、不同頁(yè)面。這就是會(huì)話控制技術(shù)。
常用的會(huì)話控制技術(shù)有 Cookie 和 Session。簡(jiǎn)單地說(shuō),Cookie 是通過(guò)在客戶端中記錄信息而確定用戶身份;Session 是通過(guò)在服務(wù)器端記錄信息而確定用戶身份。
CookieCookie 是一個(gè)很小的文本文件,包含在 HTTP 請(qǐng)求報(bào)文中在 Web 服務(wù)器和瀏覽器之間傳遞。Cookie 的工作原理如下:
服務(wù)器通過(guò)在 HTTP 響應(yīng)報(bào)文中設(shè)置一個(gè) Set-Cookie 字段,并把 Cookie 數(shù)據(jù)放在 Set-Cookie 字段中隨著 HTTP 報(bào)文傳給瀏覽器;
瀏覽器在接收到 HTTP 響應(yīng)報(bào)文后,檢查到 Set-Cookie 字段有值,會(huì)在本地創(chuàng)建一個(gè) Cookie 文件來(lái)保存數(shù)據(jù);
當(dāng)瀏覽器再次向該服務(wù)器發(fā)送請(qǐng)求時(shí),瀏覽器會(huì)先搜索本地保存的 Cookie 文件,如果在 Cookie 文件中有任何與正在連接的 URL 相關(guān)的 Cookie,就在 HTTP 請(qǐng)求報(bào)文中設(shè)置一個(gè) Cookie 字段,并把 Cookie 文件中的數(shù)據(jù)添加到該字段中,最后把攜帶 Cookie 字段的 HTTP 請(qǐng)求報(bào)文發(fā)送給服務(wù)器。
Cookie 可以用來(lái)保存用戶名、密碼、個(gè)性化設(shè)置等一些簡(jiǎn)單的信息,以下是 Cookie 的使用說(shuō)明:
必須在 HTML 文件的內(nèi)容輸出之前調(diào)用 setcookie()接收
刪除
SessionSession 是在服務(wù)器端保持用戶會(huì)話數(shù)據(jù)的一種方法,其工作原理如下:
當(dāng)瀏覽器第一次訪問(wèn) PHP 腳本時(shí),seesion_start() 函數(shù)會(huì)創(chuàng)建一個(gè)唯一的 Session ID(每個(gè)客戶端都有一個(gè)唯一的標(biāo)識(shí)),并自動(dòng)通過(guò) HTTP 的響應(yīng)頭,將這個(gè) Session ID 保存到客戶端 Cookie 中。同時(shí),也在服務(wù)器端創(chuàng)建一個(gè)以 Session ID 命名的文件,用于保存這個(gè)用戶的會(huì)話信息;
當(dāng)同一個(gè)用戶再次訪問(wèn)這個(gè)網(wǎng)站時(shí),會(huì)自動(dòng)通過(guò) HTTP 的請(qǐng)求頭將 Cookie 中保存的 Seesion ID 再攜帶過(guò)來(lái);
服務(wù)器 PHP 腳本接受到客戶端請(qǐng)求,這時(shí) session_start() 函數(shù)就不會(huì)再去分配一個(gè)新的 Session ID,而是在服務(wù)器的硬盤中去尋找和這個(gè) Session ID 同名的 Session 文件,將這之前為這個(gè)用戶保存的會(huì)話信息讀出。
首先,創(chuàng)建 Session 唯一標(biāo)識(shí)的方法有兩種:通過(guò) Cookie 或者 GET 方式。PHP 在默認(rèn)情況下使用 Session 會(huì)建立一個(gè)名叫 PHPSESSID 的 Cookie(可以通過(guò) php.ini 修改 session.name 的值),如果客戶端禁用cookie,可以指定通過(guò) GET 方式把 Session ID 傳到服務(wù)器(修改 php.ini 中 session.use_trans_sid 等參數(shù))。其次,Session 是以文件的形式保存的。php.ini 中有個(gè)配置項(xiàng) --session.save_path= "" ,這個(gè)里面填寫的路徑,將會(huì)保存所有 Session 文件。Session 文件的命名格式是:sess_[PHPSESSID的值]。每一個(gè)文件,里面保存了一個(gè)會(huì)話的數(shù)據(jù)。最后,保存在 Session 文件中的數(shù)據(jù)是經(jīng)過(guò)序列化處理的,比如:
cityID|i:0;cityName|s:3:"all";fanwe_lang|s:5:"zh-cn";fanwe_currency|a:4:{s:2:"id";s:1:"1";s:6:"name_1";s:9:"人民幣";s:4:"unit";s:3:"¥";s:5:"radio";s:6:"1.0000";}_fanwe_hash__|s:32:"77c18770c6cb5d89444c407aaa3e8477";Session 同樣可以用來(lái)保存用戶名、密碼、個(gè)性化設(shè)置等一些簡(jiǎn)單的信息,以下是 Session 的使用說(shuō)明:
創(chuàng)建
//啟動(dòng) session session_start(); //注冊(cè)session變量,賦值為一個(gè)用戶的名稱 $_SESSION["username"] = "jochen"; //注冊(cè)session變量,賦值為一個(gè)用戶的ID $_SESSION["uid"] = 1;注意:必須在 HTML 文件的內(nèi)容輸出之前調(diào)用 session_start()讀取
銷毀
需要注意的是,當(dāng) session 文件比較多的情況下,將會(huì)產(chǎn)生 I/Q 讀寫性能問(wèn)題。此時(shí)可以采用 memcached、redis 等緩存系統(tǒng)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28561.html
摘要:會(huì)話控制的思想是指能夠在網(wǎng)站里根據(jù)一個(gè)會(huì)話跟蹤用戶。在之后,包含了會(huì)話控制函數(shù),可以使用超級(jí)全局變量。檢查數(shù)組來(lái)確定一個(gè)變量是否是注冊(cè)的會(huì)話變量。注銷和銷毀注銷某一個(gè)會(huì)話。 筆記內(nèi)容來(lái)源于《PHP和mysql web開(kāi)發(fā)》,有興趣的可以看看這本書, 一.什么是會(huì)話控制:http是一個(gè)無(wú)狀態(tài)協(xié)議,說(shuō)明http沒(méi)有一個(gè)內(nèi)建機(jī)制來(lái)維護(hù)兩個(gè)事物之間的狀態(tài)。當(dāng)一個(gè)用戶訪問(wèn)不同的頁(yè)面時(shí),http無(wú)...
摘要:一的會(huì)話也稱為。如果啟動(dòng)會(huì)話成功,則函數(shù)返回,否則返回。會(huì)話啟動(dòng)后就可以載入該會(huì)話已經(jīng)注冊(cè)的會(huì)話變量以便使用。但數(shù)組創(chuàng)建的在會(huì)話結(jié)束后就會(huì)失效。預(yù)告本周三更新面試常考之網(wǎng)絡(luò)協(xié)議,敬請(qǐng)期待。 你好,是我琉憶,歡迎您來(lái)到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會(huì)話控制周三:PHP面試常考之網(wǎng)絡(luò)協(xié)議周五:PHP面試常考題之會(huì)話控制和...
摘要:因?yàn)樽舆M(jìn)程一定不會(huì)是組長(zhǎng)進(jìn)程,所以子進(jìn)程可以調(diào)用。主進(jìn)程退出子進(jìn)程繼續(xù)執(zhí)行啦啦啦,啦啦啦,啦啦啦,已經(jīng)變成啦,開(kāi)心一般服務(wù)器軟件都有寫配置項(xiàng),比如以模式運(yùn)行還是以模式運(yùn)行。 [原文地址:https://blog.ti-node.com/blog...] 其實(shí)前面是談過(guò)一次daemon進(jìn)程的,但是并涉及過(guò)多原理,但是并不影響使用。今天打算說(shuō)說(shuō)關(guān)于daemon進(jìn)程更多的二三事,本質(zhì)上說(shuō),如...
摘要:一下大多是網(wǎng)上的資料,自己只是整理了下,如果有錯(cuò)誤希望能指出,感謝中的相關(guān)配置先看下中的相關(guān)配置的解釋。啟用此設(shè)定可以防止有關(guān)通過(guò)傳遞會(huì)話的攻擊。值為表示直到關(guān)閉瀏覽器。例如意味著在每個(gè)請(qǐng)求中有的概率啟動(dòng)進(jìn)程。 對(duì)于session的了解,之前一直沒(méi)有仔細(xì)研究過(guò),最近遇到了一些問(wèn)題,需要解決session配置問(wèn)題,就順便查看了些資料。一下大多是網(wǎng)上的資料,自己只是整理了下,如果有錯(cuò)誤希望...
閱讀 955·2021-09-26 09:55
閱讀 3212·2021-09-22 15:36
閱讀 2993·2021-09-04 16:48
閱讀 3150·2021-09-01 11:41
閱讀 2601·2019-08-30 13:49
閱讀 1500·2019-08-29 18:46
閱讀 3554·2019-08-29 17:28
閱讀 3437·2019-08-29 14:11