版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
7.2PHPSession陳學(xué)平012Session2.1Session簡介Session是什么Session一般譯作會話,比方,在web應(yīng)用的用戶看來,他打開瀏覽器訪問一個電子商務(wù)站點(diǎn),登錄、并完畢購物直到關(guān)閉瀏覽器,這是一個會話。2.1Session簡介Session的原理Session的基本原理是服務(wù)端為每個session維護(hù)一份會話信息數(shù)據(jù),而client和服務(wù)端依靠一個全局唯一的標(biāo)識(也就是sessionid)來訪問會話信息數(shù)據(jù)。用戶訪問web應(yīng)用時,服務(wù)端程序決定何時創(chuàng)建session。2.1Session簡介Sessionid的傳遞client和服務(wù)端之間的通信是通過sessionid建立聯(lián)系的,那么sessionid是怎樣傳遞的呢?用戶端與服務(wù)端的web通信協(xié)議是http協(xié)議。而通過http取得用戶數(shù)據(jù)慣用的三種方法各自是:POST方法、GET方法還有Cookie。而PHP默認(rèn)傳遞方法正是Cookie,也是最佳方法。僅僅有在client不支持Cookie的時候(比方:瀏覽器禁用了Cookie功能)才會通過GET或POST方法來傳遞sessionid,即通過在URL的query_string部分傳遞sessionid。不建議使用GET方法傳遞參數(shù),由于那樣容易泄露信息。2.1Session簡介2.2php中如何啟動Session會話Session的設(shè)置與Cookie不同,必須先行啟動,在PHP中必須調(diào)用session_start()函數(shù),以便讓PHP核心程序?qū)⒑蚐ession相關(guān)的內(nèi)建環(huán)境變量預(yù)先載入到內(nèi)存中。使用session_start()函數(shù)啟動會話,語法格式如下的形式:1session_start(void);//創(chuàng)建Session,開始一個會話,進(jìn)行Session初始化session_start()這個函數(shù)沒有參數(shù),且返回值均為TURE。該函數(shù)有兩個主要的作用,儀式開始一個會話,而是返回已經(jīng)存在的會話。注意:通常,session_start()函數(shù)在頁面開始位置調(diào)用,然后會話變量被登錄到數(shù)據(jù)$_SESSION。7.2.3php中如何注冊和讀取Session會話2.1Session簡介注冊Session會話在php中使用Session變量,除了必須要啟動,還要經(jīng)過一個注冊的過程,注冊和讀取Session變量,都要通過訪問$_SESSION數(shù)組完成。必須在調(diào)用session_start()函數(shù)開啟Session之后才能使用。與$HTTP_SESSION_VARS不同,$_SESSION總是具有全局的范圍,因此不要對$_SESSION使用global關(guān)鍵字。在$_SESSION關(guān)聯(lián)數(shù)組中的鍵名具有和PHP中普通變量名相同的命名規(guī)則。會話變量被創(chuàng)建后,全部保存在數(shù)組$_SESSION中。通過數(shù)組$_SESSION創(chuàng)建一個會話變量很容易,只要直接給該數(shù)組添加一個元素就好了。比如如下的實(shí)例會啟動會話,創(chuàng)建一個Session變量并賦予一個空值,代碼是如下的:執(zhí)行腳本以后,Session變量就會被保存在服務(wù)器端的某一個文件夾中。2.1Session簡介實(shí)例2Session注冊會話實(shí)例代碼如下:上面的實(shí)例中Session注冊了兩個變量,如果在服務(wù)器中找到為該用戶保存Session變量的文件,打開后可以看到如下的內(nèi)容:username|s:6:"sky";uid|i:1:"1";//保存用戶Session中注冊的兩個變量的內(nèi)容2.1Session簡介讀取Session會話首先需要判斷會話變量是否有一個會話ID存在,如果不存在,就創(chuàng)建一個,并且使其能夠通過全局?jǐn)?shù)組$_SESSION進(jìn)行訪問;如果已經(jīng)存在,則將這個已經(jīng)創(chuàng)建的會話變量載入以提供給用戶使用。例如:判斷存儲用戶名的Session會話變量是否為空,如果不為空,則將該會話變量賦予$my_value,其代碼顯示如下:實(shí)例3讀取Session會話實(shí)例代碼如下:下面給出一個完整的實(shí)例2.1Session簡介實(shí)例4session使用完整示例該實(shí)例由兩個頁面構(gòu)成實(shí)例代碼如下:session1.php<?phpif(isset($_POST['submit'])){session_start();//開始建立一個會話$_SESSION['season']=$_POST['season'];//存儲會話數(shù)據(jù)header("Location:session2.php");//應(yīng)特別注意header()里的格式問題2.1Session簡介實(shí)例4session使用完整示例}?><b>存儲會話</b><hr/>選擇需要設(shè)置的數(shù)據(jù):<formname="form1"method="post"action=""id="form1"><selectname="season"id="season_select"><optionvalue="春天">春天</option>2.1Session簡介實(shí)例4session使用完整示例<optionvalue="夏天">夏天</option><optionvalue="秋天">秋天</option><optionvalue="冬天">冬天</option></select><br/><br/><br/><inputtype="submit"name="submit"value="submit"/></form>2.1Session簡介實(shí)例4session使用完整示例SESSION2.PHP代碼如下session_start();//建立或者繼續(xù)一個會話$season=$_SESSION['season'];//讀取會話數(shù)據(jù)echo"<b>讀取會話</b><br/><br/>";switch($season){case'春天';echo'現(xiàn)在是綠意盎然的春天!';break;case'夏天';<?php2.1Session簡介實(shí)例4session使用完整示例echo'現(xiàn)在是熱情四溢的夏天!';case'秋天';echo'現(xiàn)在是豐收果實(shí)的秋天!';break;case'冬天';echo'現(xiàn)在是白雪皚皚的冬天!';break;default;echo'對不起,會話中沒有數(shù)據(jù)或者不存在該對話!';break;2.1Session簡介實(shí)例4session使用完整示例}?>測試一下效果如圖7-1、7-2所示。打開session1.php測試圖7-1存儲會話提交后結(jié)果2.1Session簡介實(shí)例4session使用完整示例圖7-2讀取會話7.2.4php中如何刪除和銷毀Session當(dāng)使用完一個Session變量后,可以將其刪除;當(dāng)完成一個會話以后,也可以將其銷毀。如果用戶想退出Web系統(tǒng),就需要為他提供一個注銷的功能,把他的所有信息在服務(wù)器中銷毀。2.1Session簡介實(shí)例4session使用完整示例刪除會話的主要有刪除單個會話、刪除多個會話和結(jié)束當(dāng)前會話有3種方式,下面就3種方式分別作一個簡單的介紹。2.1Session簡介刪除單個會話刪除單個會話即刪除單個會話的變量、同數(shù)組的操作一樣,直接注銷$_SESSION數(shù)組的某個元素即可。$_SESSION['user']變量,可以使用unset()函數(shù),代碼如下所示:注意:使用unset()函數(shù)時,要注意$_SESSION數(shù)組中元素不能省略,即不可以一次注銷整個數(shù)組,這樣會禁止整個會話的功能,如unset($_SESSION)函數(shù)會將全局變量$_SESSION銷毀,而且沒有辦法將其回復(fù),用戶也不能再注冊$_SESSION變量。如果要刪除多個或者全部會話,可采用下面的兩種方法。2.1Session簡介刪除多個會話如果想把某個用戶在Session中注冊的所有變量都刪除,也就是刪除多個會話即一次注銷所有的會話變量,可以通過將一個空的數(shù)組賦值給$_SESSION來實(shí)現(xiàn),其代碼顯示如下:2.1Session簡介結(jié)束當(dāng)前會話如果整個會話已經(jīng)結(jié)束,首先應(yīng)該注銷所有會話變量,然后使用session_destroy()函數(shù)清除結(jié)束當(dāng)前的會話,并清空會話中的所有資源,徹底銷毀Session,其代碼如下顯示:前面的講解可以總結(jié)出Session的刪除和注銷過程需要好幾個步驟。下面將通過一個實(shí)例,提供完整的代碼,運(yùn)行該腳本后就可以關(guān)閉Se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年工業(yè)自動化控制系統(tǒng)研發(fā)投資合同
- 國際貿(mào)易21進(jìn)口合同的履行
- MS和偏頭痛練習(xí)題
- 二人解除婚姻關(guān)系2024年版具體合同版B版
- 臨床醫(yī)學(xué)輸血管理
- SFK系列建筑項(xiàng)目勞務(wù)分包合同(2024版)一
- 2025至2031年中國尼龍機(jī)械零件行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國α-羥基丁酸脫氫酶行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國立式甘蔗榨汁機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 有關(guān)物業(yè)裝修協(xié)議書
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報(bào)告
- 《乘用車越野性能主觀評價(jià)方法》
- 國家電網(wǎng)招聘之財(cái)務(wù)會計(jì)類題庫含完整答案(必刷)
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 2024年手術(shù)室?guī)Ы坦ぷ饔?jì)劃樣本(5篇)
- 一年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
- 中醫(yī)基礎(chǔ)理論課件
- 保安服務(wù)招投標(biāo)書范本(兩篇)2024
- 遼寧省沈陽市五校協(xié)作體2024-2025學(xué)年高二上學(xué)期11月期中考試語文試題(含答案)
- 算法分析與設(shè)計(jì)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論