php基礎(chǔ)教學(xué)課件-12.會(huì)話控制_第1頁(yè)
php基礎(chǔ)教學(xué)課件-12.會(huì)話控制_第2頁(yè)
php基礎(chǔ)教學(xué)課件-12.會(huì)話控制_第3頁(yè)
php基礎(chǔ)教學(xué)課件-12.會(huì)話控制_第4頁(yè)
php基礎(chǔ)教學(xué)課件-12.會(huì)話控制_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PHP會(huì)話控制,后盾網(wǎng) 2012-2013 v2.0,后盾網(wǎng) 人人做后盾 ,HTTP特性,無(wú)狀態(tài) 無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快; 無(wú)狀態(tài)性客戶端與服務(wù)器端連接通信運(yùn)行速度快,服務(wù)器應(yīng)答也快。因?yàn)闊o(wú)狀態(tài),協(xié)議對(duì)事務(wù)處理是沒(méi)有記憶性的是獨(dú)立的。所以為了滿足后面事務(wù)需要前面的事務(wù)有關(guān)信息,所以事務(wù)有關(guān)的信息要在協(xié)議外發(fā)送,COOKIE,Cookie 最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月發(fā)明。Cookie是當(dāng)用戶瀏覽某網(wǎng)站時(shí)

2、,服務(wù)器存儲(chǔ)在用戶機(jī)器上的一個(gè)小文本文件,再次來(lái)到該網(wǎng)站時(shí),網(wǎng)站通過(guò)讀取Cookie,得知用戶的相關(guān)信息,就可以做出相應(yīng)的動(dòng)作; Cookie傳遞 Cookie是利用了網(wǎng)頁(yè)代碼中的HTTP頭信息進(jìn)行傳遞的,瀏覽器的每一次網(wǎng)頁(yè)請(qǐng)求,都可以伴隨Cookie傳遞。服務(wù)器將Cookie添加到網(wǎng)頁(yè)的HTTP頭信息中,伴隨網(wǎng)頁(yè)數(shù)據(jù)傳回到用戶的瀏覽器,瀏覽器會(huì)根據(jù)用戶電腦中的Cookie設(shè)置選擇是否保存這些數(shù)據(jù)。如果瀏覽器不允許Cookie保存,則關(guān)掉瀏覽器后,這些數(shù)據(jù)就消失;,COOKIE,生命周期 Cookie有一個(gè)Expires(有效期)屬性,這個(gè)屬性決定了Cookie的保存時(shí)間,服務(wù)器可以通過(guò)設(shè)定E

3、xpires字段的數(shù)值,來(lái)改變Cookie的保存時(shí)間如果不設(shè)置該屬性,或設(shè)為0,那么Cookie只在瀏覽網(wǎng)頁(yè)期間有效,關(guān)閉瀏覽器,這些Cookie自動(dòng)消失,COOKIE,瀏覽器處理Cookie方式 數(shù)量各個(gè)瀏覽器中會(huì)不同,同一瀏覽器版本也不同IE8允許每個(gè)域保存50個(gè)cookieFirefox允許每個(gè)域保存50個(gè)cookie 大小:一般來(lái)說(shuō)允許4Kb,不同瀏覽器,不同版本略有不同 當(dāng)Cookie的數(shù)量達(dá)到上限時(shí)的刪除方式1:將最近使用最少的Cookie刪除2:隨機(jī)刪除,生成COOKIE,setcookie ( string name , string value , int expire ,

4、string path , string domain , bool secure ) name Cookie 的名字 value Cookie 的值 expire Cookie 過(guò)期的時(shí)間 path Cookie 在服務(wù)器端的有效路徑 domain 該 cookie 有效的域名 secure 指明 cookie 是否僅通過(guò)安全的 HTTPS 連接傳送。當(dāng)設(shè)成 TRUE 時(shí),cookie 僅在安全的連接中被設(shè)置。默認(rèn)值為 FALSE; 第七個(gè)參數(shù)設(shè)為true后,只能通過(guò)http訪問(wèn),javascript無(wú)法訪問(wèn),COOKIE數(shù)組或?qū)ο?操作數(shù)組 $_COOKIEa=111; $_COOKIEb

5、=222; $_COOKIE1=111; $_COOKIE2=666; 操作對(duì)象 通過(guò)序列化實(shí)現(xiàn) serialize() string serialize ( mixed $value )產(chǎn)生一個(gè)可存儲(chǔ)的值的表示 unserialize() mixed unserialize ( string $str , string $callback )從已存儲(chǔ)的表示中創(chuàng)建 PHP 的值,SESSION,Session從用戶訪問(wèn)頁(yè)面開始,到斷開與網(wǎng)站連接為止,形成一個(gè)會(huì)話的生命周期。在會(huì)話期間,分配客戶唯一的一個(gè)SessionID,用來(lái)標(biāo)識(shí)當(dāng)前用戶,與其他用戶進(jìn)行區(qū)分; Session會(huì)話時(shí),Sessi

6、onID會(huì)分別保存在客戶端和服務(wù)器端兩個(gè)位置,對(duì)于客戶端使用臨時(shí)的Cookie保存(Cookie名稱為PHPSESSID)或者通過(guò)URL字符串傳遞,服務(wù)器端也以文本文件形式保存在指定的Session目錄中; Session通過(guò)ID接受每一個(gè)訪問(wèn)請(qǐng)求,從而識(shí)別當(dāng)前用戶、跟蹤和保持用戶具體資料,以及Session變量(在Session活動(dòng)期間,可在Session中存儲(chǔ)數(shù)字或文字資料),比如session_name等等,這些變量信息保存在服務(wù)器端,SESSION,session_start() 開始一個(gè)會(huì)話或者返回已經(jīng)存在的會(huì)話,判斷客戶端有無(wú)session_id,如果沒(méi)有,在服務(wù)器端寫入SESSI

7、ON文件(或者通過(guò)數(shù)據(jù)庫(kù)等完成)發(fā)送寫session_id的cookie頭信息。如果有客戶端發(fā)來(lái)的session_id則找相應(yīng)session數(shù)據(jù) session使用方法 同get post等使用方法相同,$_SESSIONvar即可使用 更改session_id() session_regenerate_id() 更改成功則返回true,失敗則返回false。更改session_id,但不改變當(dāng)前session的其他信息 session_name() 返回當(dāng)前session的name或改變當(dāng)前session的name,SESSION傳遞方式,通過(guò)COOKIE傳遞 通過(guò)URL地址欄傳遞 定義普通

8、GET變量 定義session_name SID常量等于 isset($_COOKIEsession_name()?define(cc, ):define(cc, session_name().=.session_id() 隱藏表單域 設(shè)置php.ini中的session.use_trans_sid = 1或者編譯時(shí)打開打開了-enable-trans-sid選項(xiàng),讓PHP自動(dòng)跨頁(yè)傳遞session id 如果在session_start();之前加代碼session_id($sessionid);將不產(chǎn)生新的session文件,直接讀取與這個(gè)id對(duì)應(yīng)的session文件,清除SESSION,

9、unset($_SESSIONweb)/刪除session變量 $_SESSION = array()/刪除所有session變量, 不刪除session文件 session_unset()/釋放當(dāng)前在內(nèi)存中已經(jīng)創(chuàng)建的所有$_SESSION變量,但不刪除session文件以及不釋放對(duì)應(yīng)的session id session_destroy()/刪除當(dāng)前用戶對(duì)應(yīng)的session文件以及釋放session id,內(nèi)存中的$_SESSION變量?jī)?nèi)容依然保留 釋放用戶的 session 所有資源 session_unset() session_destroy(),配置文件設(shè)置SESSION環(huán)境,ses

10、sion_save_path 會(huì)話數(shù)據(jù)的路徑。如果指定的路徑,將數(shù)據(jù)保存到路徑中; = PHPSESSID 用在cookie里的會(huì)話ID標(biāo)識(shí)名,只能包含字母和數(shù)字,配置文件設(shè)置SESSION環(huán)境,session.use_cookies = On 是否使用cookie在客戶端保存會(huì)話ID session.use_only_cookies = Off 是否僅僅使用cookie在客戶端保存會(huì)話ID。PHP6的默認(rèn)值為On session.cookie_lifetime = 0 傳遞會(huì)話ID的Cookie有效期(秒),0 表示僅在瀏覽器打開期間有效 session.cooki

11、e_path = / 傳遞會(huì)話ID的Cookie作用路徑,配置文件設(shè)置SESSION環(huán)境,session.cookie_domain = 傳遞會(huì)話ID的Cookie作用域。默認(rèn)為空表示根據(jù)cookie規(guī)范生成的主機(jī)名 session.cookie_secure = Off 是否僅通過(guò)安全連接(https)發(fā)送cookie session.cookie_httponly = Off 是否在cookie中添加httpOnly標(biāo)志(僅允許HTTP協(xié)議訪問(wèn)),這將導(dǎo)致客戶端腳本(JavaScript等)無(wú)法訪問(wèn)該cookie session.use_trans_sid = Off 是否使用明碼在URL

12、中顯示SID(會(huì)話ID)。默認(rèn)是禁止的,因?yàn)樗鼤?huì)給你的用戶帶來(lái)安全危險(xiǎn),配置文件設(shè)置SESSION環(huán)境,session.save_path = /tmp 傳遞給存儲(chǔ)處理器的參數(shù)。你可以使用N;MODE;/path這樣模式定義該路徑(N是一個(gè)整數(shù))。 N表示使用N層深度的子目錄,而不是將所有數(shù)據(jù)文件都保存在一個(gè)目錄下。MODE;可選,必須使用8進(jìn)制數(shù),默認(rèn)600,表示文件的訪問(wèn)權(quán)限 = PHPSESSID 用在cookie里的會(huì)話ID標(biāo)識(shí)名,只能包含字母和數(shù)字 session.auto_start = Off 在客戶訪問(wèn)任何頁(yè)面時(shí)都自動(dòng)初始化會(huì)話,默認(rèn)禁止。 因?yàn)轭惗x

13、必須在會(huì)話啟動(dòng)之前被載入,所以若打開這個(gè)選項(xiàng),你就不能在會(huì)話中存放對(duì)象,配置文件設(shè)置SESSION環(huán)境,session.serialize_handler = php 用來(lái)序列化/解序列化數(shù)據(jù)的處理器,php是標(biāo)準(zhǔn)序列化/解序列化處理器。 session.gc_probability = 1 session.gc_divisor = 100 定義在每次初始化會(huì)話時(shí),啟動(dòng)垃圾回收程序的概率。 這個(gè)收集概率計(jì)算公式如下:session.gc_probability/session.gc_divisor; 對(duì)會(huì)話頁(yè)面訪問(wèn)越頻繁,概率就應(yīng)當(dāng)越小。建議值為1/10005000,配置文件設(shè)置SESSION

14、環(huán)境,session.gc_maxlifetime = 1440 超過(guò)此參數(shù)所指的秒數(shù)后,保存的數(shù)據(jù)將被視為垃圾并由垃圾回收程序清理。 判斷標(biāo)準(zhǔn)是最后訪問(wèn)數(shù)據(jù)的時(shí)間(對(duì)于FAT文件系統(tǒng)是最后刷新數(shù)據(jù)的時(shí)間)。 如果多個(gè)腳本共享同一個(gè)session.save_path目錄但session.gc_maxlifetime不同, 那么將以所有session.gc_maxlifetime指令中的最小值為準(zhǔn)。 如果使用多層子目錄來(lái)存儲(chǔ)數(shù)據(jù)文件,垃圾回收程序不會(huì)自動(dòng)啟動(dòng)。 你必須使用一個(gè)你自己編寫的shell腳本、cron項(xiàng)或者其他辦法來(lái)執(zhí)行垃圾搜集;,PHP垃圾回收機(jī)制,什么是垃圾 沒(méi)有任何變量指向這個(gè)對(duì)

15、象時(shí),即為垃圾。PHP會(huì)自動(dòng)從內(nèi)存中將其銷毀,防止內(nèi)存溢出。當(dāng)一個(gè)PHP線程結(jié)束時(shí),當(dāng)前所有占用的內(nèi)存都會(huì)被銷毀 _destruct()析構(gòu)函數(shù),在垃圾對(duì)象被回收時(shí)執(zhí)行 引用計(jì)數(shù)器 每個(gè)對(duì)象都包含一個(gè)引用計(jì)數(shù)器,每個(gè)引用連接對(duì)象時(shí),計(jì)數(shù)器+1。當(dāng)引用離開生存空間或設(shè)為NULL時(shí),計(jì)數(shù)器減1。當(dāng)某個(gè)對(duì)象計(jì)數(shù)器為0時(shí),啟動(dòng)垃圾回收器,釋放其所占用的空間,PHP垃圾回收機(jī)制,$a = 100; 在內(nèi)容中開辟空間保存100。用PHP內(nèi)部符號(hào)表的$a指向內(nèi)存地址,方便依據(jù)符號(hào)操作內(nèi)存; unset() 即斷開符號(hào)表與內(nèi)容地址的關(guān)系。將計(jì)數(shù)器-1; NULL 即直接將內(nèi)容引用計(jì)數(shù)器清為0;,SESSION的垃圾回收機(jī)制,PHP的工作機(jī)制 它并沒(méi)有一個(gè)daemon線程來(lái)定期的掃描Session信息并判斷其是否失效,當(dāng)一個(gè)有效的請(qǐng)求發(fā)生時(shí),PHP 會(huì)根據(jù)全局變量 session.gc_probability和session.gc_divisor的值,來(lái)決定是否啟用一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論