Session是否必須依賴Cookie?
www.ouryh.net 銀河技術在線ㄕ整理時間:2001-8-7ㄕ作者: 不詳 ㄕ來源: 不詳 ㄕ閱讀:36
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>
";
?>
<?//文件名為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稍作修改:
<?
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>