最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Session是否必須依賴Cookie

 更新時間:2013年08月02日 09:03:45   作者:  
php中的session是否只能使用session cookie呢?下面小編就來詳細(xì)的為大家介紹一下吧,需要的朋友可以過來參考下

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

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

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

復(fù)制代碼 代碼如下:

<?
//文件名為test1.php
session_start();
session_register("url");
$url="test2.php";
echo "<a href=$url>goto test2.php</a>";
?><SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif"> </SPAN>

復(fù)制代碼 代碼如下:

<?//文件名為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.";
?>

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

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

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

復(fù)制代碼 代碼如下:

<?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",分別把鼠標(biāo)移到兩個鏈接上看看有沒有不同?可以看到,兩個鏈接是完全相同的,后面都會自動附帶session id.所以不必?fù)?dān)心沒被包含在php標(biāo)簽中的鏈接會失效,php不會這么笨的.

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

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

只靠session是不能跨窗口使用的,即使你啟用了cookie,當(dāng)你在一個窗口中有一個合法的session id(記錄在session cookie中,不是url中),再新開一個窗口進(jìn)入相同頁面時,你會重新?lián)碛幸粋€新的session id,而與前一個窗口互不影響.

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

相關(guān)文章

  • PHP 5.0 Pear安裝方法

    PHP 5.0 Pear安裝方法

    PHP 5.0 Pear安裝方法...
    2006-12-12
  • php計算一個文件大小的方法

    php計算一個文件大小的方法

    這篇文章主要介紹了php計算一個文件大小的方法,涉及php操作文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • PHP獲取昨天、今天及明天日期的方法

    PHP獲取昨天、今天及明天日期的方法

    這篇文章主要介紹了PHP獲取昨天、今天及明天日期的方法,涉及PHP針對時間與日期的相關(guān)操作技巧,非常簡單實用,需要的朋友可以參考下
    2016-02-02
  • php獲取url參數(shù)方法總結(jié)

    php獲取url參數(shù)方法總結(jié)

    這篇文章主要介紹了php獲取url參數(shù)方法,實例總結(jié)了利用parse_url()函數(shù)解析URL的方法,需要的朋友可以參考下
    2014-11-11
  • php準(zhǔn)確計算復(fù)活節(jié)日期的方法

    php準(zhǔn)確計算復(fù)活節(jié)日期的方法

    這篇文章主要介紹了php準(zhǔn)確計算復(fù)活節(jié)日期的方法,涉及php操作日期的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • php中namespace use用法實例分析

    php中namespace use用法實例分析

    這篇文章主要介紹了php中namespace use用法,結(jié)合實例形式分析了PHP中命名空間的定義與使用技巧,需要的朋友可以參考下
    2016-01-01
  • php 防止單引號,雙引號在接受頁面轉(zhuǎn)義

    php 防止單引號,雙引號在接受頁面轉(zhuǎn)義

    在使用php的過程中,我們需要使用單引號和雙引號,所以需要轉(zhuǎn)義一下
    2008-07-07
  • 最新評論

    藁城市| 安丘市| 图片| 当雄县| 朝阳市| 德庆县| 甘洛县| 中宁县| 金塔县| 绍兴市| 长泰县| 巴彦县| 新竹市| 广南县| 林州市| 长宁区| 宝坻区| 都匀市| 肥城市| 湘阴县| 勃利县| 米脂县| 乌什县| 库尔勒市| 伊吾县| 永城市| 竹溪县| 元江| 南雄市| 和硕县| 德兴市| 弥渡县| 宁武县| 横峰县| 凯里市| 三河市| 鄱阳县| 德阳市| 沧源| 繁昌县| 北流市|