成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

處理session跨域幾種方案

處理session 跨域幾種方案1. 訪問(wèn)共同的sessionId, 把當(dāng)前的sessionId 寫(xiě)進(jìn)cookie 里面cookie 在不同域名下是不能訪問(wèn)的,我們需要在訪問(wèn)在后臺(tái)設(shè)置用戶在登錄的時(shí)候

處理session 跨域幾種方案

1. 訪問(wèn)共同的sessionId, 把當(dāng)前的sessionId 寫(xiě)進(jìn)cookie 里面

cookie 在不同域名下是不能訪問(wèn)的,我們需要在訪問(wèn)在后臺(tái)設(shè)置用戶在登錄的時(shí)候,把需要共用的登錄信息的域名,如果是在1,2級(jí)域名下,直接把 cookie 設(shè)置為所屬主域名,例如:setcookie("session_id",session_id(),time() 3600*24*365*10,"/",".a.com");

也許你會(huì)問(wèn):如果是在不同的域名呢?采用P3P 技術(shù)簡(jiǎn)單解決,實(shí)現(xiàn)原理,在訪問(wèn)網(wǎng)站x.com 的時(shí)候,y.com 程序觸發(fā)y.com 文件的寫(xiě)入 sessionid 值,sessionid 值便可以獲取,然后把seesion 值存入數(shù)據(jù)庫(kù),取相同的sessionid 值便可。這就要求y.com 里面的程序文件必需能跨域訪問(wèn), 默認(rèn)情況下,瀏覽器是不能跨域設(shè)置cookie 的,加上p3p 頭后才行。在對(duì)應(yīng)php 文件加上:header(‘P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"’);

2.session 數(shù)據(jù)存儲(chǔ)位置一致的實(shí)現(xiàn)方法

session 該數(shù)據(jù)默認(rèn)情況下是存放在服務(wù)器的tmp 文件下的,是以文件形式存在,而非存儲(chǔ)在服務(wù)器的內(nèi)存中,在這里我們得修改為所有域下都能訪問(wèn)的方式。網(wǎng)上介紹了數(shù)據(jù)庫(kù)存儲(chǔ),文件形式存儲(chǔ),內(nèi)存存儲(chǔ), 如果用數(shù)據(jù)庫(kù)存儲(chǔ)session 數(shù)據(jù),網(wǎng)站的訪問(wèn)量很大的話,SESSION 的讀寫(xiě)會(huì)頻繁地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,效率就會(huì)明顯降低,可以考慮存在內(nèi)存服務(wù)器來(lái)實(shí)現(xiàn),下面的session.rar 里面介紹的是數(shù)據(jù)庫(kù)存session 的實(shí)例。

,

常用跨域共用session 的是登錄模塊,我相信很多開(kāi)發(fā)的朋友的都遇到過(guò),只需要一個(gè)地方登錄,相關(guān)聯(lián)的網(wǎng)站也是處于登錄狀態(tài)。兩種情況:一種9streets.cn 和a.9streets.cn 之間,另一種是a.com b.com 之間

方式一: 在一,二級(jí)域名下調(diào)用如下代碼:

DBsession.php

lifeTime = get_cfg_var("session.gc_maxlifetime");

// open database-connection

$db_handle = @mysql_connect(self::db_host, self::db_user, self::db_pwd); $dbSel = @mysql_select_db(self::db_name, $db_handle);

// return success

if(!$db_handle || !$dbSel)

return false;

,

$this->db_handle = $db_handle;

return true;

}

function close()

{

$this->gc(ini_get('session.gc_maxlifetime'));

// close database-connection

return @mysql_close($this->db_handle);

}

function read($sessID)

{

// fetch session-data

$res = @mysql_query("SELECT session_data AS d FROM ".self::db_table." WHERE session_id = '$sessID'

AND session_expires > ".time(), $this->db_handle);

// return data or an empty string at failure

,

if($row = @mysql_fetch_assoc($res))

return $row['d'];

return "";

}

function write($sessID, $sessData)

{

// new session-expire-time

$newExp = time() $this->lifeTime;

// is a session with this id in the database?

$res = @mysql_query("SELECT * FROM ".self::db_table." WHERE session_id = '$sessID'", $this->db_handle); // if yes,

if(@mysql_num_rows($res))

{

// ...update session-data

@mysql_query("UPDATE ".self::db_table."

,

SET session_expires = '$newExp',

session_data = '$sessData'

WHERE session_id = '$sessID'", $this->db_handle); // if something happened, return true

if(@mysql_affected_rows($this->db_handle)) return true;

}

else // if no session-data was found,

{

// create a new row

@mysql_query("INSERT INTO ".self::db_table." ( session_id,

session_expires,

session_data)

VALUES(

'$sessID',

,

'$newExp',

'$sessData')", $this->db_handle);

// if row was created, return true

if(@mysql_affected_rows($this->db_handle))

return true;

}

// an unknown error occured

return false;

}

function destroy($sessID)

{

// delete session-data

@mysql_query("DELETE FROM ".self::db_table." WHERE session_id = '$sessID'", $this->db_handle);

// if session was deleted, return true,

if(@mysql_affected_rows($this->db_handle))

,

return true;

// ...else return false

return false;

}

function gc($sessMaxLifeTime)

{

// delete old sessions

@mysql_query("DELETE FROM ".self::db_table." WHERE session_expires < ".time(), $this->db_handle);

// return affected rows

return @mysql_affected_rows($this->db_handle);

}

}

/**

* 指定session 有效的域名

* ini_set("session.cookie_domain", ".domain.com");

,

* .domain.com是站點(diǎn)的主域名, 請(qǐng)注意前面?zhèn)€有一個(gè)'.' */

define("MAIN_DOMAIN", ".ichezone.com"); //設(shè)置主域名 /**

* 不同子域名下共享session 信息

* COOKIE_DOMAIN = false 禁止該功能

* COOKIE_DOMAIN = true 啟用該功能

* 默認(rèn)禁止

* 開(kāi)啟前提需要定義MAIN_DOMAIN常量

*/

define("COOKIE_DOMAIN", true);

if (defined("COOKIE_DOMAIN") && COOKIE_DOMAIN) {

if (defined("MAIN_DOMAIN"))

@ini_set("session.cookie_domain", MAIN_DOMAIN); }

標(biāo)簽: