摘要:為應(yīng)用程序啟用會(huì)話(huà)狀態(tài)時(shí),將檢查應(yīng)用程序中每個(gè)頁(yè)面請(qǐng)求是否有瀏覽器發(fā)送的值。如果未提供任何值,則將啟動(dòng)一個(gè)新會(huì)話(huà),并將該會(huì)話(huà)的值隨響應(yīng)一起發(fā)送到瀏覽器。
session
什么是session?
session在計(jì)算機(jī)中,尤其在網(wǎng)絡(luò)應(yīng)用中,稱(chēng)為"會(huì)話(huà)控制";具體到web中的session指的就是用戶(hù)在瀏覽某個(gè)網(wǎng)站時(shí),從進(jìn)入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過(guò)的這段時(shí)間,也就是用戶(hù)瀏這個(gè)網(wǎng)站所花費(fèi)的時(shí)間。因此從上述的定義中可以看到,session是一個(gè)特定的時(shí)間概念。
為什么要使用session?
HTTP協(xié)議是一種無(wú)狀態(tài)的協(xié)議,即同一個(gè)客戶(hù)端的本次請(qǐng)求和上次請(qǐng)求沒(méi)有對(duì)應(yīng)關(guān)系,http服務(wù)器并不知道這兩個(gè)請(qǐng)求來(lái)自同一個(gè)客戶(hù)端;優(yōu)點(diǎn)在于減輕服務(wù)器的壓力,缺點(diǎn)在于每次請(qǐng)求會(huì)傳輸大量重復(fù)的內(nèi)容信息
session提供在PHP腳本中定義全局變量的方法,使得這個(gè)全局變量在同一個(gè)session中對(duì)于所有的PHP腳本文本內(nèi)都有效。所以,session是基于HTTP服務(wù)器的用于保持狀態(tài)的方法;
session允許通過(guò)將數(shù)據(jù)存儲(chǔ)到HTTP服務(wù)器中,以在整個(gè)用戶(hù)會(huì)話(huà)過(guò)程中保持該數(shù)據(jù);所以,session不僅是一個(gè)時(shí)間概念,還包括了特定的用戶(hù)和服務(wù)器;
session的工作原理
會(huì)話(huà)由一個(gè)唯一標(biāo)識(shí)符標(biāo)識(shí),可使用session_id函數(shù)讀取此標(biāo)識(shí)符。為PHP應(yīng)用程序啟用會(huì)話(huà)狀態(tài)時(shí),將檢查應(yīng)用程序中每個(gè)頁(yè)面請(qǐng)求是否有瀏覽器發(fā)送的sessionID值。如果未提供任何sessionID值,則PHP將啟動(dòng)一個(gè)新會(huì)話(huà),并將該會(huì)話(huà)的sessionID值隨響應(yīng)一起發(fā)送到瀏覽器。
默認(rèn)情況下,sessionID值存儲(chǔ)在cookie中,也可以實(shí)現(xiàn)在URL中存儲(chǔ)sessionID
只要一直使用相同的sessionID值來(lái)發(fā)送請(qǐng)求,會(huì)話(huà)就被視為活動(dòng)的,如果特定會(huì)話(huà)的請(qǐng)求間隔超過(guò)指定的超時(shí)值(以秒為單位),則該會(huì)話(huà)被視為已過(guò)期。如果使用過(guò)期的sessionID值發(fā)送的請(qǐng)求將生成一個(gè)新的會(huì)話(huà)
和session相關(guān)的函數(shù)
/* * session_start * 描述:?jiǎn)?dòng)新會(huì)話(huà)或者重用現(xiàn)有會(huì)話(huà) * 語(yǔ)法:bool session_start([array $options = []]) * ---在服務(wù)器上創(chuàng)建了一個(gè)sessionID,并創(chuàng)建了一個(gè)存儲(chǔ)session的文件 * 說(shuō)明: * A. $options參數(shù)是一個(gè)關(guān)聯(lián)數(shù)組,如果提供的話(huà),則會(huì)用其中的項(xiàng)目覆蓋"會(huì)話(huà)配置"中的配置選項(xiàng); * B. 如果通過(guò)GET或者POST方式,或者使用cookie提交了會(huì)話(huà)ID,則會(huì)重用現(xiàn)有會(huì)話(huà) * * session_id * 描述:獲取/設(shè)置當(dāng)前會(huì)話(huà)ID * 語(yǔ)法:string session_id([string $id]) * 說(shuō)明: * A. 如果指定$id參數(shù)的值,則使用指定值作為會(huì)話(huà)ID * B. 如果設(shè)置$id參數(shù)的值,必須在調(diào)用session_start()函數(shù)之前調(diào)用session_id()函數(shù) * * session_name * 描述:讀取/設(shè)置會(huì)話(huà)名稱(chēng) * 語(yǔ)法:string session_name([string $name]) * 說(shuō)明: * A. 如果指定$name參數(shù),session_name()函數(shù)會(huì)更新會(huì)話(huà)名稱(chēng),并返回原來(lái)的會(huì)話(huà)名稱(chēng); * B. 如果指定$name參數(shù),必須在調(diào)用session_start函數(shù)之前調(diào)用session_name()函數(shù) * * session_destroy * 描述:銷(xiāo)毀一個(gè)會(huì)話(huà)中的全部數(shù)據(jù) * 語(yǔ)法:bool session_destroy() * * chrome瀏覽器cookies存儲(chǔ)地: * ~/Library/Application Support/Google/Chrome/Default/Cookies * 將Cookies加擴(kuò)展名sqlite,然后用sqlite工具打開(kāi)Cookies */
PHP配置中session片段
/* * 在/Applications/XAMPP/etc/php.ini文件中可以查看下列片段: * * session.auto_start(boolean) * 描述:session.auto_start指定會(huì)話(huà)模塊是否在請(qǐng)求開(kāi)始時(shí)自動(dòng)啟動(dòng),默認(rèn)為0(不啟動(dòng)),一般不進(jìn)行修改該配置; * * session.name(string) * 描述:指定會(huì)話(huà)名以用做cookid的名字,只能由字母數(shù)字組成,默認(rèn)為"PHPSESSID"; * * session.save_handler(string) * 描述:定義用來(lái)存儲(chǔ)和獲取與會(huì)話(huà)關(guān)聯(lián)的數(shù)據(jù)的處理器的名字,默認(rèn)為files,即文件; * * session.save_path(string) * 描述:定義傳遞給存儲(chǔ)處理器的參數(shù),如果選擇默認(rèn)的files文件處理器,則值則是文件的路徑; * * session.gc_maxlifetime(integer) * 描述:指定過(guò)了多少秒之后數(shù)據(jù)就會(huì)被視為"垃圾"并被清除; * * session.gc_probability(integer)、session.gc_divisor(integer) * 描述:定義在每個(gè)會(huì)話(huà)初始化時(shí)啟動(dòng)gc進(jìn)程的概率,此概率通過(guò)gc_probability/gc_divisor計(jì)算,值為1000,表示為千分之一 * */cookie
什么是cookie?
HTTP cookie也叫Web cookie或者瀏覽器cookie,是服務(wù)器發(fā)送到用戶(hù)瀏覽器并保存在瀏覽器上的數(shù)據(jù),它會(huì)在瀏覽器下一次發(fā)起請(qǐng)求時(shí)被攜帶并發(fā)送到服務(wù)器上;
HTTP cookie是HTTP標(biāo)頭的組成部分;
session是存儲(chǔ)在服務(wù)器端,cookie是存儲(chǔ)在瀏覽器端
cookie的作用
會(huì)話(huà)狀態(tài)管理(如用戶(hù)登錄狀態(tài)、購(gòu)物車(chē)):如十天自動(dòng)登錄
個(gè)性化設(shè)置(如用戶(hù)自定義設(shè)置)
瀏覽器行為跟蹤(如跟蹤分析用戶(hù)信息)
與cookie相關(guān)的函數(shù)
/* * setcookie函數(shù) * 描述:設(shè)置cookie * 語(yǔ)法:bool setcookie(string $name[, string $value = ""[, int $expire = 0[, string $path = ""[, string $domain = ""]]]]) * 說(shuō)明: * A. $name參數(shù)用于指定cookie名稱(chēng); * B. $value參數(shù)用于設(shè)置cookie值; * C. $expire參數(shù)用于設(shè)置cookie的生命周期(Unix時(shí)間戳); * D. $path參數(shù)用于設(shè)置服務(wù)器上可用cookie的路徑;如果設(shè)置為"/",則代表在整個(gè)域名內(nèi)都有效, * 如果設(shè)置為"/foo/",則僅代表在域名內(nèi)的/foo目錄及其子目錄內(nèi)有效; * E. $domain參數(shù)用于設(shè)置cookie可用的域名范圍(包含子域名); * * 注意:會(huì)話(huà)期cookie是指瀏覽器關(guān)閉之后會(huì)被自動(dòng)刪除,也就是它僅在會(huì)話(huà)期間有效; * 會(huì)話(huà)期cookie不需要指定過(guò)期時(shí)間(Expire); * * 持久cookie:指定一個(gè)特定的過(guò)期時(shí)間(Expire); * */
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28732.html
摘要:對(duì)象具有請(qǐng)求域,即完成客戶(hù)端的請(qǐng)求之前,該對(duì)象一直有效。提交的數(shù)據(jù)量最多不超過(guò)。安全性較低但效率比方式高。適合提交數(shù)據(jù)量大,安全性高的用戶(hù)信息。除非本次會(huì)話(huà)的所有頁(yè)面都關(guān)閉后再重新訪問(wèn)某個(gè)或者,將會(huì)創(chuàng)建新的會(huì)話(huà)。 JSP 簡(jiǎn)介 全名為Java Server Pages,其根本是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),實(shí)現(xiàn)了在Java當(dāng)中使用HTML標(biāo)簽。JSP是一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),也是Java...
摘要:保存這個(gè)的方式可以采用,這樣在交互過(guò)程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)揮給服務(wù)器。存放數(shù)據(jù)到數(shù)據(jù)庫(kù)中的默認(rèn)存放是通過(guò)建立一個(gè)名為的文件進(jìn)行存放。 什么是session HTTP協(xié)議是無(wú)狀態(tài)的,我們?cè)跒g覽一個(gè)網(wǎng)站的時(shí)候 網(wǎng)站并不知道你是誰(shuí),為了解決這一點(diǎn)于是有了==會(huì)話(huà)管理==會(huì)話(huà)管理主要包括cookie和session。cookie可以在客戶(hù)端記錄下信息,而session則是記錄...
摘要:最近在研究架構(gòu)方面的知識(shí),包括數(shù)據(jù)庫(kù)讀寫(xiě)分離,緩存和隊(duì)列,集群,以及負(fù)載均衡,今天就來(lái)先學(xué)習(xí)下我在負(fù)載均衡中遇到的問(wèn)題,那就是共享的問(wèn)題。一負(fù)載均衡負(fù)載均衡把眾多的訪問(wèn)量分擔(dān)到其他的服務(wù)器上,讓每個(gè)服務(wù)器的壓力減少。 最近在研究Web架構(gòu)方面的知識(shí),包括數(shù)據(jù)庫(kù)讀寫(xiě)分離,Redis緩存和隊(duì)列,集群,以及負(fù)載均衡(LVS),今天就來(lái)先學(xué)習(xí)下我在負(fù)載均衡中遇到的問(wèn)題,那就是session共享...
閱讀 1868·2023-04-25 19:51
閱讀 1168·2021-11-15 11:43
閱讀 4529·2021-11-02 14:40
閱讀 1999·2021-10-11 10:59
閱讀 1339·2021-09-22 15:05
閱讀 1027·2021-09-09 09:32
閱讀 648·2019-08-30 15:56
閱讀 549·2019-08-30 15:52