中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Session是否必須依賴Cookie的問題

發布時間:2021-10-11 22:56:18 來源:億速云 閱讀:130 作者:iii 欄目:開發技術

本篇內容主要講解“如何理解Session是否必須依賴Cookie的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何理解Session是否必須依賴Cookie的問題”吧!

php中的session可以默認情況下是使用客戶端的cookie(以便和普通意義上的cookie區別,我稱之為session cookie,普通意義上的cookie為cookie)來保存session id的,但是php中的session是否只能使用session cookie呢?

當然不是,否則何必還弄個session出來,不如直接用cookie算了.session的一大優點就是當客戶端的cookie被禁用時會自動把session id附在url中,這樣再通過session id就能記住session變量了.

下面我寫兩個文件來證實一下,首先在瀏覽器中設置禁用cookie.

復制代碼 代碼如下:

<?
//文件名為test1.php
session_start();
session_register("url");
$url="test2.php";
echo "<a href=$url>goto test2.php</a>";
?><SPAN > </SPAN>

復制代碼 代碼如下:


<?//文件名為test2.php
session_start();
if (session_is_registered("url")) {
   echo "congratulations.";
   $url="test1.php";
   echo "<a href=$url>goto test1.php</a>";
} else
   echo "failed.";
?>


現在在瀏覽器中輸入"http://localhost/test1.php",把鼠標移到鏈接上看看狀態欄上的地址,不是簡單的"http://localhost/test2.php",而是這種形式:"http://localhost/test2.php?phpsessid=6e3610749f7ded3784bc4a4dd10f879b".

你還可以查看html的源文件,源文件是這種形式:
<a href="test2.php?phpsessid=6e3610749f7ded3784bc4a4dd10f879b">goto test2.php</a>
所以說這完全是php的功勞,和瀏覽器無關,也就是說無論你用什么瀏覽器session都有效,而不是有的人認為的只對ie有用.

但是,我們的超鏈接是語句是由echo語句輸出的,如果超鏈接不包含在php的標簽<? ?>之內會怎樣呢?還是寫個例子來驗證一下,把test1.php稍作修改:

復制代碼 代碼如下:

<?php
session_start();
session_register("url");
$url="test2.php";
echo "<a href=$url>goto test2.php</a>";?>
<a href="test2.php">(html形式)goto test2.php</a>


在瀏覽器中輸入"http://localhost/test1.php",分別把鼠標移到兩個鏈接上看看有沒有不同?可以看到,兩個鏈接是完全相同的,后面都會自動附帶session id.所以不必擔心沒被包含在php標簽中的鏈接會失效,php不會這么笨的.

但是在使用時要注意必須先用session_start()函數告訴php開始用session,哪怕你在這個文件中只有html代碼,如:
<? session_start();?>
<html>
<head>
<body>
<a href=test2.php>gogogo</a>
…………

記得有人說過這個優點只能在linux/unix下才能發揮出來,而我用的win2000p+apache1.3.17+php4.0.4pl1,php為apache模塊方式,卻照樣可以.恰恰相反,我轉到linux下去測試時反而不行了.其實是在編譯時的一個選項--enable-trans-sid控制了這項功能能否有用.而按照php默認來編譯時是沒有打開這項功能的,只需重新編譯時加入它就可以了.我的配置為apache1.3.17+php4.0.4pl1,php為apache模塊方式,在linux重新編譯后用netscape navigator4.7測試可以通過(這更證明了和瀏覽器無關).

只靠session是不能跨窗口使用的,即使你啟用了cookie,當你在一個窗口中有一個合法的session id(記錄在session cookie中,不是url中),再新開一個窗口進入相同頁面時,你會重新擁有一個新的session id,而與前一個窗口互不影響.

要想跨窗口使用同一個session id就只能在url后指定session id,也就是說如果你把帶有session id的的窗口的url復制,在新開的窗口中粘貼一下,還是照樣使用的.知道了session id的這個原理要實現跨窗口session還是不難的,可以把cookie與session結合起來,首先取得當前合法的session id,然后把它記錄在cookie中,在其它窗口讀取cookie就可獲得當前的session id了.

到此,相信大家對“如何理解Session是否必須依賴Cookie的問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

聂荣县| 个旧市| 康乐县| 温州市| 定南县| 连城县| 奈曼旗| 马公市| 赤壁市| 大港区| 胶州市| 沐川县| 新巴尔虎右旗| 军事| 焦作市| 阿坝县| 通河县| 南陵县| 孝昌县| 墨竹工卡县| 扎赉特旗| 金塔县| 凤冈县| 青浦区| 胶南市| 扬中市| 新干县| 正镶白旗| 逊克县| 安泽县| 绩溪县| 崇仁县| 湖州市| 曲沃县| 凤山县| 梁平县| 长乐市| 文山县| 福鼎市| 罗江县| 宁安市|