色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

PHP中Session會(huì)話的使用和分析

瀏覽:8日期:2024-01-11 15:47:52

Session的中文譯名叫做“會(huì)話”,其本來的含義是指有始有終的一系列動(dòng)作/消息,比如打電話時(shí)從拿起電話撥號(hào)到掛斷電話這中間的一系列過程可以稱之為一個(gè)Session。目前社會(huì)上對(duì)Session的理解非常混亂:有時(shí)候我們可以看到這樣的話“在一個(gè)瀏覽器會(huì)話期間,...”,這里的會(huì)話是指從一個(gè)瀏覽器窗口打開到關(guān)閉這個(gè)期間;也可以看到“用戶(客戶端)在一次會(huì)話期間”這樣一句話,它可能指用戶的一系列動(dòng)作(一般情況下是同某個(gè)具體目的相關(guān)的一系列動(dòng)作,比如從登錄到選購商品到結(jié)賬登出這樣一個(gè)網(wǎng)上購物的過程;然而有時(shí)候也可能僅僅是指一次連接;其中的差別只能靠上下文來推斷了。

然而當(dāng)Session一詞與網(wǎng)絡(luò)協(xié)議相關(guān)聯(lián)時(shí),它又往往隱含了“面向連接”和/或“保持狀態(tài)”這樣兩個(gè)含義,“面向連接”指的是在通信雙方在通信之前要先建立一個(gè)通信的渠道,比如打電話,直到對(duì)方接了電話通信才能開始。“保持狀態(tài)”則是指通信的一方能夠把一系列的消息關(guān)聯(lián)起來,使得消息之間可以互相依賴,比如一個(gè)服務(wù)員能夠認(rèn)出再次光臨的老顧客并且記得上次這個(gè)顧客還欠店里一塊錢。這一類的例子有“一個(gè)TCP Session”或者“一個(gè)POP3 Session”。

鑒于這種混亂已不可改變,要為Session下個(gè)定義就很難有統(tǒng)一的標(biāo)準(zhǔn)。而在閱讀Session相關(guān)資料時(shí),我們也只有靠上下文來推斷理解了。不過我們可以這樣理解:例如我們打電話,從撥通的那一刻起到掛斷電話期間,因?yàn)殡娫捯恢北3种油ǖ臓顟B(tài),所以把這種接通的狀態(tài)叫做Session。它是訪客與整個(gè)網(wǎng)站交互過程中一直存在的公有變量,在客戶端不支持COOKIE的時(shí)候,為了保證數(shù)據(jù)正確、安全,就采用Session變量。訪問網(wǎng)站的來客會(huì)被分配一個(gè)唯一的標(biāo)識(shí)符,即所謂的會(huì)話 ID。它要么存放在客戶端的 cookie,要么經(jīng)由 URL 傳遞。

Session的發(fā)明填補(bǔ)了HTTP協(xié)議的局限:HTTP協(xié)議被認(rèn)為是無狀態(tài)協(xié)議,無法得知用戶的瀏覽狀態(tài),當(dāng)它在服務(wù)端完成響應(yīng)之后,服務(wù)器就失去了與該瀏覽器的聯(lián)系。這與HTTP協(xié)議本來的目的是相符的,客戶端只需要簡單的向服務(wù)器請(qǐng)求下載某些文件,無論是客戶端還是服務(wù)器都沒有必要紀(jì)錄彼此過去的行為,每一次請(qǐng)求之間都是獨(dú)立的,好比一個(gè)顧客和一個(gè)自動(dòng)售貨機(jī)或者一個(gè)普通的(非會(huì)員制)大賣場之間的關(guān)系一樣。

因此通過Session(cookie是另外一種解決辦法)記錄用戶的有關(guān)信息,以供用戶再次以此身份對(duì)web服務(wù)器提起請(qǐng)求時(shí)作確認(rèn)。會(huì)話的發(fā)明使得一個(gè)用戶在多個(gè)頁面間切換時(shí)能夠保存他的信息。網(wǎng)站編程人員都有這樣的體會(huì),每一頁中的變量是不能在下一頁中使用的(雖然form,url也可以實(shí)現(xiàn),但這都是非常不理想的辦法),而Session中注冊(cè)的變量就可以作為全局變量使用了。

那么Session到底有什么用處呢?網(wǎng)上購物時(shí)大家都用過購物車,你可以隨時(shí)把你選購的商品加入到購物車中,最后再去收銀臺(tái)結(jié)帳。在整個(gè)過程中購物車一直扮演著臨時(shí)存貯被選商品的角色,用它追蹤用戶在網(wǎng)站上的活動(dòng)情況,這就是Session的作用,它可以用于用戶身份認(rèn)證,程序狀態(tài)記錄,頁面之間參數(shù)傳遞等。

Session的實(shí)現(xiàn)中采用COOKIE技術(shù),Session會(huì)在客戶端保存一個(gè)包含Session_id(Session編號(hào))的COOKIE;在服務(wù)器端保存其他Session變量,比如Session_name等等。當(dāng)用戶請(qǐng)求服務(wù)器時(shí)也把Session_id一起發(fā)送到服務(wù)器,通過 Session_id提取所保存在服務(wù)器端的變量,就能識(shí)別用戶是誰了。同時(shí)也不難理解為什么Session有時(shí)會(huì)失效了。

當(dāng)客戶端禁用COOKIE時(shí)(點(diǎn)擊IE中的“工具”—“Internet選項(xiàng)”,在彈出的對(duì)話框里點(diǎn)擊“安全”—“自定義級(jí)別”項(xiàng),將“允許每個(gè)對(duì)話COOKIE”設(shè)為禁用),Session_id將無法傳遞,此時(shí)Session失效。不過php5在linux/unix平臺(tái)可以自動(dòng)檢查 cookie狀態(tài),如果客戶端設(shè)置了禁用,則系統(tǒng)自動(dòng)把Session_id附加到url上傳遞。windows主機(jī)則無此功能。

Session常見函數(shù)及用法

Session_start() :開始一個(gè)會(huì)話或者返回已經(jīng)存在的會(huì)話。

說明:這個(gè)函數(shù)沒有參數(shù),且返回值均為true。如果你使用基于cookie的Session(cookie-based Sessions),那么在使用Session_start()之前瀏覽器不能有任何輸出,否則會(huì)發(fā)生以下錯(cuò)誤:

Warning: Cannot send Session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2)……

你可以在php.ini里啟動(dòng)Session.auto_start=1,這樣就無需每次使用Session之前都要調(diào)用 Session_start()。但啟用該選項(xiàng)也有一些限制,如果確實(shí)啟用了 Session.auto_start,則不能將對(duì)象放入會(huì)話中,因?yàn)轭惗x必須在啟動(dòng)會(huì)話之前加載以在會(huì)話中重建對(duì)象。

請(qǐng)求結(jié)束后所有注冊(cè)的變量都會(huì)被序列化。已注冊(cè)但未定義的變量被標(biāo)記為未定義。在之后的訪問中這些變量也未被會(huì)話模塊定義,除非用戶以后定義它們。

有些類型的數(shù)據(jù)不能被序列化因此也就不能保存在會(huì)話中。包括 resource 變量或者有循環(huán)引用的對(duì)象(即某對(duì)象將一個(gè)指向自己的引用傳遞給另一個(gè)對(duì)象)。

標(biāo)簽: PHP
主站蜘蛛池模板: 91亚洲精品一区二区在线观看 | 久爱免费观看在线网站 | 欧美成人久久久 | 婷婷色综合久久五月亚洲 | 日本亚洲国产 | 国产成人麻豆tv在线观看 | 精品国产综合区久久久久久 | 清纯偷拍精品视频在线观看 | 久久精品成人免费看 | 亚洲天堂成人 | 91精品欧美一区二区综合在线 | 日韩不卡一级毛片免费 | 日本一级毛片视频无遮挡免费 | www.久草视频 | 在线免费黄色网址 | 日韩在线二区 | 美女视频黄的免费看网站 | 久草综合在线视频 | 免费在线观看a级毛片 | 久久是精品 | 国产欧美日韩精品第二区 | 特色一级片| 欧美日韩国产高清一区二区三区 | 亚洲欧美另类视频 | 亚洲女人在线 | 99在线视频免费 | 久久久久久国产精品视频 | 国产99高清一区二区 | gayxxxxgay中国老头 | 在线播放免费一级毛片欧美 | 欧美国产精品亚洲精品第一区 | 国产性色 | 国产亚洲欧美日韩在线看片 | 久草在线视频网站 | 久草在| 91精品啪在线观看国产91九色 | 亚洲成人在线视频网站 | 亚洲国产精品a一区二区三区 | 亚洲黄区| 精品国产综合区久久久久99 | 欧美久草在线 |