<s id="z8ggw"><dfn id="z8ggw"></dfn></s>
<s id="z8ggw"></s>

<span id="z8ggw"><u id="z8ggw"></u></span>
  • <s id="z8ggw"></s>
    <u id="z8ggw"></u><s id="z8ggw"><dfn id="z8ggw"></dfn></s><dfn id="z8ggw"></dfn>
  • 傳遞會話

    • 2020-09-09 11:09:29
    • 閱讀次數:
    • 作者:盈嵐科技小編
    • 來源:http://www.bibiworld.net

    做網站中,使用Session跟蹤一個用戶,是通過在各個頁面之間傳遞唯一的Session ID,并通過Session ID提取這個用戶在服務器中保存的Session變量。常見的Session ID傳送方法有以下兩種。

    ?基于Cookie的方式傳遞Session ID,這種方法更優化,但由于不總是可用,因為用戶在客戶端可以屏蔽Cookie。   

    ?通過URL參數進行傳遞,直接將會話ID嵌入到URL中去。在Session的實現中通常都是采用基于Cookie的方式,客戶端保存的Session ID就是一個Cookie。當客戶禁用Cookie時,Session ID就不能再在Cookie中保存,也就不能在頁面之間傳遞,此時Session失效。不過PHP 5在Linux平臺可以自動檢查Cookie狀態,如果客戶端將它禁用,則系統自動把Session ID附加到URL上傳送。而使用Windows系統作為Web服務器則無此功能。

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

    2. 通過URL傳遞Session ID如果客戶瀏覽器支持Cookie,就把Session ID作為Cookie保存在瀏覽器中。但如果客戶端禁止Cookie的使用,瀏覽器中就不存在作為Cookie的Session ID,因此在客戶請求中不包含Cookie信息。如果調用session_start()函數時,無法從客戶端瀏覽器中取得作為Cookie的Session ID,則又創建了一個新的Session ID,也就無法跟蹤客戶狀態。因此,每次客戶請求支持Session的PHP腳本,session_start()函數在開啟Session時都會創建一個新的Session,這樣就失去了跟蹤用戶狀態的功能。在PHP中提出了跟蹤Session的另一種機制,如果客戶瀏覽器不支持Cookie,PHP則可以重寫客戶請求的URL,把Session ID添加到URL信息中??梢允謩拥卦诿總€超鏈接的URL中都添加一個Session ID。如下所示:

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

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


    當前文章標題:傳遞會話

    當前URL:http://www.bibiworld.net/news/wzzz/3274.html

    上一篇:注銷和銷毀會話

    下一篇:設置會話有效期

    網站建設、抖音推廣、頭條推廣、微信朋友圈推廣、快手推廣專線:15368242187(微信同號)
    美女隐私免费网站,美女隐私全部免费网站,美女隐私网站免费看视频,美女隐私网站免费视频,美女隐私无遮挡网站视频,国产最大精品免费AV电影网站,国产最爽的乱婬视频,国产最爽的乱婬视频a,国产最新97超级碰碰碰碰碰久,国产最新99精品视频,巨胸流奶水视频www冈,巨胸美女露双奶头无圣光,巨胸喷奶水视频WWW,俱乐部换娇妻大杂交,剧情原创AV影视,人人操人人爽人人喊,人人操人人爽人人贱,人人操人人爽人人噜,人人操人人爽人人摸,人人操人人爽人人透,一圾黄色片一区二区_一个中国一级黄片儿_一个色综合高清在线观看,一女4p三黑人免费视频_一男一女真人免费A片_一男一女无遮掩一级毛片,一级婬片A级中文字幕_一级淫录像一区二区_一级一人片日本一级一大片,91九色国产社区在线观看,91九色蝌蚪熟女,91九色老熟女免费资源站,91九色私密保健,91九色自拍视频,一本高清无码dvd在线播放_一本高清码二区三区网站_一本高清码二区三区不卡。