六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]作者:Christopher Kings-Lynne 翻譯:limodou   Cookie真是一個偉大的發明,它允許web開發者保留他們的用戶的登錄狀態。然而,當你的站點或網絡 有一個以上的域名時...
作者:Christopher Kings-Lynne 翻譯:limodou

  Cookie真是一個偉大的發明,它允許web開發者保留他們的用戶的登錄狀態。然而,當你的站點或網絡
有一個以上的域名時就會出現問題了。


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


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

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

<?php

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

// 如果GET變量已經設置了,并且它與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'];
}

?>

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


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

<?php

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

?>

  現在,如果在代碼中如下做:

<?php

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

?>
  你將產生如下的輸出:

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

  在這里sessionid已經被插入到URL中去了。

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


第三步:配置Apache
  現在,剩下的步驟就是配置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
  為了實現它,簡單地配置兩個虛擬服務器,作為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>

  這些重寫的規則實現了上面兩個URL重寫的要求。

結論
  通過使用變量結合與apache的重寫功能,交叉域名cookie可以以一種簡單的方式實現。想要維護這樣的
系統,無論什么時候鏈接交叉域名,在使用域名變量之外,什么也不用作了!在域名內部的鏈接不需要進行
修改,因為cookie會工作正常。

  如果你有興趣看一下在生產網絡中實際運作中的系統,請參觀http://www.familyhealth.com.au/。在
一些交叉域名鏈接上移動你的鼠標,并且看一下當你點擊后它們是如何被重寫的。

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

轉自:PHPBuilder.com


主站蜘蛛池模板: 四虎永久免费影院 | 婷婷久久综合网 | 午夜成人免费视频 | 最新欧美一级视频 | 亚洲精品乱码国产精品乱码 | 日韩欧美中文字幕一区 | 日日做夜夜做 | 四虎在线永久免费观看 | 欧美一区视频 | 日本视频中文字幕一区二区 | 色橹橹欧美在线观看视频高清免费 | 午夜高清在线观看免费6 | 日本视频在线观看不卡高清免费 | 亚洲视频免费在线观看 | 天堂网www天堂在线资源链接 | 综合激情文学 | 色先锋资源站 | 日韩成人中文字幕 | 欧美亚洲动漫 | 欧美网站在线观看 | 亚洲春色第一页 | 日本激情小视频 | 中文字幕日韩高清 | 亚美黑人区 | 日本一区二区三区高清在线观看 | 日韩欧美视频免费观看 | 青青草原免费在线视频 | 日韩专区中文字幕 | 在线观看国产黄色 | 中文字幕在线导航 | 亚洲天堂婷婷 | 欧洲天堂网 | 日本妞欧洲 | 亚洲94vvv男人的天堂五月 | 欧美又大又粗又长又硬 | 清清草免费视频 | 婷婷狠狠五月天小说免费 | 天堂v亚洲国产v一区二区 | 日本激情小视频 | 日日夜夜精品免费视频 | 中日韩欧美风情视频 |