av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

PHP中Session會話的使用和分析

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

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

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

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

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

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

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

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

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

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

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

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

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

你可以在php.ini里啟動Session.auto_start=1,這樣就無需每次使用Session之前都要調(diào)用 Session_start()。但啟用該選項也有一些限制,如果確實啟用了 Session.auto_start,則不能將對象放入會話中,因為類定義必須在啟動會話之前加載以在會話中重建對象。

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

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

標簽: PHP
主站蜘蛛池模板: 99久久精品免费看国产高清 | 国产精品久久久久久影院8一贰佰 | 午夜精品福利视频 | 亚洲国产精品久久久久婷婷老年 | 国产四虎| 免费黄色片在线观看 | 久久久久久精 | 国产美女黄色片 | chinese中国真实乱对白 | 99热在线观看精品 | 国产精品一区久久久 | 久操国产 | 精品国产一区二区三区观看不卡 | 精品日韩在线 | 日韩精品一区二区三区中文字幕 | 久久综合久色欧美综合狠狠 | 一级黄色片在线免费观看 | 二区视频 | 中文字幕 在线观看 | 国产丝袜一区二区三区免费视频 | 日韩中文字幕在线观看视频 | 亚洲视频区 | 性一交一乱一伦视频免费观看 | 国产高清在线精品一区二区三区 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 久久成人午夜 | 7777久久 | 国产一区二区三区久久久久久久久 | 国产精品99久久久久久久久久久久 | 国产91黄色 | 午夜小影院| 国产网站在线播放 | 黄色激情毛片 | 91看片在线观看 | 91精品国产综合久久久久久漫画 | 日韩激情视频一区 | 精品免费av | 国产免费又黄又爽又刺激蜜月al | 成人av激情 | 久久成人综合 | 超碰av免费 |