PHP程序設(shè)計(jì)基礎(chǔ)(微課版)(第2版)課件 2.PHP SESSION會(huì)話_第1頁
PHP程序設(shè)計(jì)基礎(chǔ)(微課版)(第2版)課件 2.PHP SESSION會(huì)話_第2頁
PHP程序設(shè)計(jì)基礎(chǔ)(微課版)(第2版)課件 2.PHP SESSION會(huì)話_第3頁
PHP程序設(shè)計(jì)基礎(chǔ)(微課版)(第2版)課件 2.PHP SESSION會(huì)話_第4頁
PHP程序設(shè)計(jì)基礎(chǔ)(微課版)(第2版)課件 2.PHP SESSION會(huì)話_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

7.2PHPSession陳學(xué)平012Session2.1Session簡(jiǎn)介Session是什么Session一般譯作會(huì)話,比方,在web應(yīng)用的用戶看來,他打開瀏覽器訪問一個(gè)電子商務(wù)站點(diǎn),登錄、并完畢購(gòu)物直到關(guān)閉瀏覽器,這是一個(gè)會(huì)話。2.1Session簡(jiǎn)介Session的原理Session的基本原理是服務(wù)端為每個(gè)session維護(hù)一份會(huì)話信息數(shù)據(jù),而client和服務(wù)端依靠一個(gè)全局唯一的標(biāo)識(shí)(也就是sessionid)來訪問會(huì)話信息數(shù)據(jù)。用戶訪問web應(yīng)用時(shí),服務(wù)端程序決定何時(shí)創(chuàng)建session。2.1Session簡(jiǎn)介Sessionid的傳遞client和服務(wù)端之間的通信是通過sessionid建立聯(lián)系的,那么sessionid是怎樣傳遞的呢?用戶端與服務(wù)端的web通信協(xié)議是http協(xié)議。而通過http取得用戶數(shù)據(jù)慣用的三種方法各自是:POST方法、GET方法還有Cookie。而PHP默認(rèn)傳遞方法正是Cookie,也是最佳方法。僅僅有在client不支持Cookie的時(shí)候(比方:瀏覽器禁用了Cookie功能)才會(huì)通過GET或POST方法來傳遞sessionid,即通過在URL的query_string部分傳遞sessionid。不建議使用GET方法傳遞參數(shù),由于那樣容易泄露信息。2.1Session簡(jiǎn)介2.2php中如何啟動(dòng)Session會(huì)話Session的設(shè)置與Cookie不同,必須先行啟動(dòng),在PHP中必須調(diào)用session_start()函數(shù),以便讓PHP核心程序?qū)⒑蚐ession相關(guān)的內(nèi)建環(huán)境變量預(yù)先載入到內(nèi)存中。使用session_start()函數(shù)啟動(dòng)會(huì)話,語法格式如下的形式:1session_start(void);//創(chuàng)建Session,開始一個(gè)會(huì)話,進(jìn)行Session初始化session_start()這個(gè)函數(shù)沒有參數(shù),且返回值均為TURE。該函數(shù)有兩個(gè)主要的作用,儀式開始一個(gè)會(huì)話,而是返回已經(jīng)存在的會(huì)話。注意:通常,session_start()函數(shù)在頁面開始位置調(diào)用,然后會(huì)話變量被登錄到數(shù)據(jù)$_SESSION。7.2.3php中如何注冊(cè)和讀取Session會(huì)話2.1Session簡(jiǎn)介注冊(cè)Session會(huì)話在php中使用Session變量,除了必須要啟動(dòng),還要經(jīng)過一個(gè)注冊(cè)的過程,注冊(cè)和讀取Session變量,都要通過訪問$_SESSION數(shù)組完成。必須在調(diào)用session_start()函數(shù)開啟Session之后才能使用。與$HTTP_SESSION_VARS不同,$_SESSION總是具有全局的范圍,因此不要對(duì)$_SESSION使用global關(guān)鍵字。在$_SESSION關(guān)聯(lián)數(shù)組中的鍵名具有和PHP中普通變量名相同的命名規(guī)則。會(huì)話變量被創(chuàng)建后,全部保存在數(shù)組$_SESSION中。通過數(shù)組$_SESSION創(chuàng)建一個(gè)會(huì)話變量很容易,只要直接給該數(shù)組添加一個(gè)元素就好了。比如如下的實(shí)例會(huì)啟動(dòng)會(huì)話,創(chuàng)建一個(gè)Session變量并賦予一個(gè)空值,代碼是如下的:執(zhí)行腳本以后,Session變量就會(huì)被保存在服務(wù)器端的某一個(gè)文件夾中。2.1Session簡(jiǎn)介實(shí)例2Session注冊(cè)會(huì)話實(shí)例代碼如下:上面的實(shí)例中Session注冊(cè)了兩個(gè)變量,如果在服務(wù)器中找到為該用戶保存Session變量的文件,打開后可以看到如下的內(nèi)容:username|s:6:"sky";uid|i:1:"1";//保存用戶Session中注冊(cè)的兩個(gè)變量的內(nèi)容2.1Session簡(jiǎn)介讀取Session會(huì)話首先需要判斷會(huì)話變量是否有一個(gè)會(huì)話ID存在,如果不存在,就創(chuàng)建一個(gè),并且使其能夠通過全局?jǐn)?shù)組$_SESSION進(jìn)行訪問;如果已經(jīng)存在,則將這個(gè)已經(jīng)創(chuàng)建的會(huì)話變量載入以提供給用戶使用。例如:判斷存儲(chǔ)用戶名的Session會(huì)話變量是否為空,如果不為空,則將該會(huì)話變量賦予$my_value,其代碼顯示如下:實(shí)例3讀取Session會(huì)話實(shí)例代碼如下:下面給出一個(gè)完整的實(shí)例2.1Session簡(jiǎn)介實(shí)例4session使用完整示例該實(shí)例由兩個(gè)頁面構(gòu)成實(shí)例代碼如下:session1.php<?phpif(isset($_POST['submit'])){session_start();//開始建立一個(gè)會(huì)話$_SESSION['season']=$_POST['season'];//存儲(chǔ)會(huì)話數(shù)據(jù)header("Location:session2.php");//應(yīng)特別注意header()里的格式問題2.1Session簡(jiǎn)介實(shí)例4session使用完整示例}?><b>存儲(chǔ)會(huì)話</b><hr/>選擇需要設(shè)置的數(shù)據(jù):<formname="form1"method="post"action=""id="form1"><selectname="season"id="season_select"><optionvalue="春天">春天</option>2.1Session簡(jiǎn)介實(shí)例4session使用完整示例<optionvalue="夏天">夏天</option><optionvalue="秋天">秋天</option><optionvalue="冬天">冬天</option></select><br/><br/><br/><inputtype="submit"name="submit"value="submit"/></form>2.1Session簡(jiǎn)介實(shí)例4session使用完整示例SESSION2.PHP代碼如下session_start();//建立或者繼續(xù)一個(gè)會(huì)話$season=$_SESSION['season'];//讀取會(huì)話數(shù)據(jù)echo"<b>讀取會(huì)話</b><br/><br/>";switch($season){case'春天';echo'現(xiàn)在是綠意盎然的春天!';break;case'夏天';<?php2.1Session簡(jiǎn)介實(shí)例4session使用完整示例echo'現(xiàn)在是熱情四溢的夏天!';case'秋天';echo'現(xiàn)在是豐收果實(shí)的秋天!';break;case'冬天';echo'現(xiàn)在是白雪皚皚的冬天!';break;default;echo'對(duì)不起,會(huì)話中沒有數(shù)據(jù)或者不存在該對(duì)話!';break;2.1Session簡(jiǎn)介實(shí)例4session使用完整示例}?>測(cè)試一下效果如圖7-1、7-2所示。打開session1.php測(cè)試圖7-1存儲(chǔ)會(huì)話提交后結(jié)果2.1Session簡(jiǎn)介實(shí)例4session使用完整示例圖7-2讀取會(huì)話7.2.4php中如何刪除和銷毀Session當(dāng)使用完一個(gè)Session變量后,可以將其刪除;當(dāng)完成一個(gè)會(huì)話以后,也可以將其銷毀。如果用戶想退出Web系統(tǒng),就需要為他提供一個(gè)注銷的功能,把他的所有信息在服務(wù)器中銷毀。2.1Session簡(jiǎn)介實(shí)例4session使用完整示例刪除會(huì)話的主要有刪除單個(gè)會(huì)話、刪除多個(gè)會(huì)話和結(jié)束當(dāng)前會(huì)話有3種方式,下面就3種方式分別作一個(gè)簡(jiǎn)單的介紹。2.1Session簡(jiǎn)介刪除單個(gè)會(huì)話刪除單個(gè)會(huì)話即刪除單個(gè)會(huì)話的變量、同數(shù)組的操作一樣,直接注銷$_SESSION數(shù)組的某個(gè)元素即可。$_SESSION['user']變量,可以使用unset()函數(shù),代碼如下所示:注意:使用unset()函數(shù)時(shí),要注意$_SESSION數(shù)組中元素不能省略,即不可以一次注銷整個(gè)數(shù)組,這樣會(huì)禁止整個(gè)會(huì)話的功能,如unset($_SESSION)函數(shù)會(huì)將全局變量$_SESSION銷毀,而且沒有辦法將其回復(fù),用戶也不能再注冊(cè)$_SESSION變量。如果要?jiǎng)h除多個(gè)或者全部會(huì)話,可采用下面的兩種方法。2.1Session簡(jiǎn)介刪除多個(gè)會(huì)話如果想把某個(gè)用戶在Session中注冊(cè)的所有變量都刪除,也就是刪除多個(gè)會(huì)話即一次注銷所有的會(huì)話變量,可以通過將一個(gè)空的數(shù)組賦值給$_SESSION來實(shí)現(xiàn),其代碼顯示如下:2.1Session簡(jiǎn)介結(jié)束當(dāng)前會(huì)話如果整個(gè)會(huì)話已經(jīng)結(jié)束,首先應(yīng)該注銷所有會(huì)話變量,然后使用session_destroy()函數(shù)清除結(jié)束當(dāng)前的會(huì)話,并清空會(huì)話中的所有資源,徹底銷毀Session,其代碼如下顯示:前面的講解可以總結(jié)出Session的刪除和注銷過程需要好幾個(gè)步驟。下面將通過一個(gè)實(shí)例,提供完整的代碼,運(yùn)行該腳本后就可以關(guān)閉Se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論