国产午夜亚洲精品国产成人_欧美屁股大的xxxxx_丰满巨肥大屁股bbw网站_日韩精品亚洲aⅴ在线影院_旧番剧精灵の森へようこそ

傳遞會(huì)話

做網(wǎng)站中,使用Session跟蹤一個(gè)用戶(hù),是通過(guò)在各個(gè)頁(yè)面之間傳遞唯一的Session ID,并通過(guò)Session ID提取這個(gè)用戶(hù)在服務(wù)器中保存的Session變量。常見(jiàn)的Session ID傳送方法有以下兩種。

?基于Cookie的方式傳遞Session ID,這種方法更優(yōu)化,但由于不總是可用,因?yàn)橛脩?hù)在客戶(hù)端可以屏蔽Cookie。   

?通過(guò)URL參數(shù)進(jìn)行傳遞,直接將會(huì)話ID嵌入到URL中去。在Session的實(shí)現(xiàn)中通常都是采用基于Cookie的方式,客戶(hù)端保存的Session ID就是一個(gè)Cookie。當(dāng)客戶(hù)禁用Cookie時(shí),Session ID就不能再在Cookie中保存,也就不能在頁(yè)面之間傳遞,此時(shí)Session失效。不過(guò)PHP 5在Linux平臺(tái)可以自動(dòng)檢查Cookie狀態(tài),如果客戶(hù)端將它禁用,則系統(tǒng)自動(dòng)把Session ID附加到URL上傳送。而使用Windows系統(tǒng)作為Web服務(wù)器則無(wú)此功能。

  1. 通過(guò)Cookie傳遞Session ID如果客戶(hù)端沒(méi)有禁用Cookie,則在PHP腳本中通過(guò)session_start()函數(shù)進(jìn)行初始化后,服務(wù)器會(huì)自動(dòng)發(fā)送HTTP標(biāo)頭將Session ID保存到客戶(hù)端電腦的Cookie中。類(lèi)似于下面的設(shè)置方式:setCookie(session_name(), session_id(), 0, '/')  //虛擬向Cookie中設(shè)置Session ID的過(guò)程在第一個(gè)參數(shù)中調(diào)用session_name()函數(shù),返回當(dāng)前Session的名稱(chēng)作為Cookie的標(biāo)識(shí)名稱(chēng)。Session名稱(chēng)的默認(rèn)值為PHPSESSID,是在php.ini文件中由session.name選項(xiàng)指定的值。也可以在調(diào)用session_name()函數(shù)時(shí)提供參數(shù)改變當(dāng)前Session的名稱(chēng)。在第二個(gè)參數(shù)中調(diào)用session_id()函數(shù),返回當(dāng)前Session ID作為Cookie的值。也可以通過(guò)調(diào)用session_id()函數(shù)時(shí)提供參數(shù)設(shè)定當(dāng)前SessionID。第三個(gè)參數(shù)的值0,是通過(guò)在php.ini文件中由session.cookie_lifetime選項(xiàng)設(shè)置的值。默認(rèn)值為0,表示Session ID將在客戶(hù)機(jī)的Cookie中延續(xù)到瀏覽器關(guān)閉。最后一個(gè)參數(shù)‘/’,也是通過(guò)PHP配置文件指定的值,在php.ini中由session.cookie_path選項(xiàng)設(shè)置的值。默認(rèn)值為‘/’,表示在Cookie中要設(shè)置的路徑在整個(gè)域內(nèi)都有效。如果服務(wù)器成功將Session ID保存在客戶(hù)端的Cookie中,當(dāng)用戶(hù)再次請(qǐng)求服務(wù)器時(shí),就會(huì)把Ses-sion ID發(fā)送回來(lái)。所以當(dāng)在腳本中再次使用ses-sion_start()函數(shù)時(shí),就會(huì)根據(jù)Cookie中的SessionID返回已經(jīng)存在的Session。

  2. 通過(guò)URL傳遞Session ID如果客戶(hù)瀏覽器支持Cookie,就把Session ID作為Cookie保存在瀏覽器中。但如果客戶(hù)端禁止Cookie的使用,瀏覽器中就不存在作為Cookie的Session ID,因此在客戶(hù)請(qǐng)求中不包含Cookie信息。如果調(diào)用session_start()函數(shù)時(shí),無(wú)法從客戶(hù)端瀏覽器中取得作為Cookie的Session ID,則又創(chuàng)建了一個(gè)新的Session ID,也就無(wú)法跟蹤客戶(hù)狀態(tài)。因此,每次客戶(hù)請(qǐng)求支持Session的PHP腳本,session_start()函數(shù)在開(kāi)啟Session時(shí)都會(huì)創(chuàng)建一個(gè)新的Session,這樣就失去了跟蹤用戶(hù)狀態(tài)的功能。在PHP中提出了跟蹤Session的另一種機(jī)制,如果客戶(hù)瀏覽器不支持Cookie,PHP則可以重寫(xiě)客戶(hù)請(qǐng)求的URL,把Session ID添加到URL信息中??梢允謩?dòng)地在每個(gè)超鏈接的URL中都添加一個(gè)Session ID。如下所示:

    <?phpsession_start();echo '<a href="demo.php?'.session_name().'='.session_id().'">鏈接演示</a>';?>

    【示例】本例中使用兩個(gè)腳本程序,演示了Session ID的傳送方法。在第一個(gè)腳本test1.php中,輸出鏈接時(shí)將SID常量附加到URL上,并將一個(gè)用戶(hù)名通過(guò)Session傳遞給目標(biāo)頁(yè)面輸出。如下所示:<?phpsession_start();                                    //開(kāi)啟Session$_SESSION["username"]="admin";                      //注冊(cè)一個(gè)Session變量,保存用戶(hù)名echo "Session ID: ".session_id()."<br>";            //在當(dāng)前頁(yè)面輸出Session ID?><a href="test2.php?<?php echo SID ?>">通過(guò)URL傳遞Session ID</a>   <!--在URL中附加SID-->在腳本test2.php中,輸出test1.php腳本在Session變量中保存的一個(gè)用戶(hù)名。又在該頁(yè)面中輸出一次Session ID,通過(guò)對(duì)比可以判斷兩個(gè)腳本是否使用同一個(gè)Session ID。另外,在開(kāi)啟或關(guān)閉Cookie時(shí),注意瀏覽器地址欄中URL的變化。代碼如下:<?phpsession_start();                                  //開(kāi)啟Sessionecho $_SESSION["username"]."<br>";                //輸出Session變量的值echo "Session ID: ".session_id()."<br>";          //輸出Session ID?>如果把客戶(hù)端的Cookie禁用,單擊test1.php頁(yè)面中的超鏈接會(huì)出現(xiàn)下面的結(jié)果,在地址欄中會(huì)把Session ID以session_name=session_id的格式添加到URL上。如果客戶(hù)端的Cookie可以使用,則會(huì)把Ses-sion ID保存到客戶(hù)端的Cookie中,而SID就成為一個(gè)空字符串,不會(huì)在地址欄中的URL后面顯示。啟用客戶(hù)端的Cookie,重復(fù)前面的操作。


網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)咨詢(xún)專(zhuān)線:0871-63535511(點(diǎn)擊可一鍵撥號(hào))