• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        完成跨域名Cookie (轉(zhuǎn)) http://www.phprecord.com

        完成跨域名Cookie (轉(zhuǎn)) http://www.phprecord.com

        更新時(shí)間:2022-05-07 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        作者:Christopher Kings-Lynne 翻譯:limodou

          Cookie真是一個偉大的發(fā)明,它允許web開發(fā)者保留他們的用戶的登錄狀態(tài)。然而,當(dāng)你的站點(diǎn)或網(wǎng)絡(luò)
        有一個以上的域名時(shí)就會出現(xiàn)問題了。


          在Cookie規(guī)范上說,一個cookie只能用于一個域名,不能夠發(fā)給其它的域名。因此,如果在瀏覽器中對
        一個域名設(shè)置了一個cookie,這個cookie對于其它的域名將無效。如果你想讓你的用戶從你的站點(diǎn)中的其中
        一個進(jìn)行登錄,同時(shí)也可以在其它域名上進(jìn)行登錄,這可真是一個大難題。


          我的解決方案將使用下面的一般框架:

        一個預(yù)置的腳本將用來接受通過GET或COOKIE方式傳遞過來的sessionid號。它將比COOKIE優(yōu)先選擇GET
        變量。所以,無論何時(shí)需要引用交叉的域名時(shí),我們把sessionid做為一個URL參數(shù)進(jìn)行發(fā)送。
        修改Apache配置,用來實(shí)現(xiàn)重寫所有的交叉域名的cookie。這樣做的原因一會兒就會清楚了。
        在任何時(shí)候出現(xiàn)一個交叉域名引用時(shí)使用變量。
        第一步:創(chuàng)建預(yù)置腳本
          將下面的代碼加到預(yù)置腳本中(或出現(xiàn)在所有腳本之前的函數(shù)中)。

        <?php

        /* 支持交叉域名cookie... */

        // 如果GET變量已經(jīng)設(shè)置了,并且它與cookie變量不同
        //則使用get變量(更新cookie)
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS;
        if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
        SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0, '/', '');
        $HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
        $sessionid = $HTTP_GET_VARS['sessionid'];
        }

        ?>

          一旦這個代碼運(yùn)行之后,一個全局的'sessionid'變量將可以用于腳本。它將保存著用戶的cookie中的
        sessionid值,或者是通過GET請求發(fā)來的sessionid值。


        第二步:為所有的交叉域名引用使用變量
          創(chuàng)建一個全局的配置文件,用于存放可以進(jìn)行切換的域名的基本引用形式。例如,如果我們擁有
        domain1.com和domain2.com,則如下設(shè)置:

        <?php

        $domains['domain1'] = "http://www.domain1.com/-$sessionid-";
        $domains['domain2'] = "http://www.domain2.com/-$sessionid-";

        ?>

          現(xiàn)在,如果在代碼中如下做:

        <?php

        echo "Click <a href=\"", $domains['domain2'], "/contact/?email=yes\">here</a> to contact us.";

        ?>
          你將產(chǎn)生如下的輸出:

        Click <a href="http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes\">here</a>
        to contact us.

          在這里sessionid已經(jīng)被插入到URL中去了。

          在這個地方,你可能會想"這樣可能會在web服務(wù)器上打開名為橫線,sessionid,橫線的子目錄?!?!?"。
        然而,下面的步驟將提供一個必需的戲法,以便讓它能夠使用!


        第三步:配置Apache
          現(xiàn)在,剩下的步驟就是配置apache來重寫這個URL:

        http://www.domain2.com/-66543afe6543asdf6asd-/contact/
          變成這樣:

        http://www.domain2.com/contact/?sessionid=66543afe6543asdf6asd
          并且這種url:

        http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
          變成這樣:

        http://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd
          為了實(shí)現(xiàn)它,簡單地配置兩個虛擬服務(wù)器,作為domain1和domain2,如下操作:

        <VirtualHost ipaddress>
        DocumentRoot /usr/local/www/domain1
        ServerName www.domain1.com
        RewriteEngine on
        RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1 [L,R,QSA]
        RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]
        </VirtualHost>

        <VirtualHost ipaddress>
        DocumentRoot /usr/local/www/domain2
        ServerName www.domain2.com
        RewriteEngine on
        RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1 [L,R,QSA]
        RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]
        </VirtualHost>

          這些重寫的規(guī)則實(shí)現(xiàn)了上面兩個URL重寫的要求。

        結(jié)論
          通過使用變量結(jié)合與apache的重寫功能,交叉域名cookie可以以一種簡單的方式實(shí)現(xiàn)。想要維護(hù)這樣的
        系統(tǒng),無論什么時(shí)候鏈接交叉域名,在使用域名變量之外,什么也不用作了!在域名內(nèi)部的鏈接不需要進(jìn)行
        修改,因?yàn)閏ookie會工作正常。

          如果你有興趣看一下在生產(chǎn)網(wǎng)絡(luò)中實(shí)際運(yùn)作中的系統(tǒng),請參觀http://www.familyhealth.com.au/。在
        一些交叉域名鏈接上移動你的鼠標(biāo),并且看一下當(dāng)你點(diǎn)擊后它們是如何被重寫的。

          也許,使用這個技術(shù)唯一的問題就是無法刪除在用戶瀏覽器中的全部域名下的cookie。

        轉(zhuǎn)自:PHPBuilder.com

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲欧洲在线观看| 亚洲AV无码日韩AV无码导航| 亚洲一区二区三区播放在线| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 男女啪啪免费体验区| 欧洲美熟女乱又伦免费视频| 亚洲av乱码一区二区三区| 波多野结衣在线免费观看| 亚洲成AV人片久久| 免费在线看v网址| 国产成人精品日本亚洲直接| 最近免费中文在线视频| 亚洲卡一卡2卡三卡4麻豆| 久久久久久精品免费免费自慰| 亚洲成年人免费网站| 一个人免费观看视频www| 亚洲综合欧美色五月俺也去| 在线观看免费宅男视频| 在线观看国产一区亚洲bd| 亚洲人成无码网WWW| 免费萌白酱国产一区二区三区| 亚洲91av视频| 999久久久免费精品国产| 亚洲成a人无码亚洲成www牛牛| 免费观看国产小粉嫩喷水| 国产免费牲交视频免费播放| 亚洲AV成人片色在线观看| 国产精品免费观看| 粉色视频在线观看www免费| 国产亚洲?V无码?V男人的天堂 | 免费人成在线视频| 四虎影视久久久免费观看| 亚洲一区二区三区在线观看精品中文| 玖玖在线免费视频| 亚洲AV成人无码网站| 亚洲永久精品ww47| 中文字幕av无码无卡免费| xvideos永久免费入口| 亚洲精品午夜视频| 国产特级淫片免费看| 最近2019中文免费字幕在线观看|