处理session跨域几种方案1.访问共同的sessionId,把当前的sessionId写进cookie里面cookie在不同域名下是不能访问的,我们需要在访问在后台设置用户在登录的时候,把需要共用的登录信息的域名,如果是在1,2级域名下,直接把cookie设置为所属主域名,例如:setcookie(session_id,session_id(),time()+3600*24*365*10,/,.a.com);也许你会问:如果是在不同的域名呢?采用P3P技术简单解决,实现原理,在访问网站x.com的时候,y.com程序触发y.com文件的写入sessionid值,sessionid值便可以获取,然后把seesion值存入数据库,取相同的sessionid值便可。这就要求y.com里面的程序文件必需能跨域访问,默认情况下,浏览器是不能跨域设置cookie的,加上p3p头后才行。在对应php文件加上:header(‘P3P:CP=CURaADMaDEVaPSAoPSDoOURBUSUNIPURINTDEMSTAPRECOMNAVOTCNOIDSPCOR’);2.session数据存储位置一致的实现方法session该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在,而非存储在服务器的内存中,在这里我们得修改为所有域下都能访问的方式。网上介绍了数据库存储,文件形式存储,内存存储,如果用数据库存储session数据,网站的访问量很大的话,SESSION的读写会频繁地对数据库进行操作,效率就会明显降低,可以考虑存在内存服务器来实现,下面的session.rar里面介绍的是数据库存session的实例。常用跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.comb.com之间方式一:在一,二级域名下调用如下代码:!--?phpinclude(DBsession.php);$_SESSION['usssser_oke']='xxssssss';$_SESSION['user_oke']='xxsss';?--DBsession.php!--?php/**/**直接引用apiQQ登录的session写法,配置相关配置才行哈*设置session配置*//***CREATETABLE`tbl_session`(*`session_id`varchar(255)binaryNOTNULLdefault'',*`session_expires`int(10)unsignedNOTNULLdefault'0',*`session_data`text,*PRIMARYKEY(`session_id`)*)ENGINE=MyISAM;*/classSession{//mysql的主机地址constdb_host=localhost;//需要第三方指定ip地址//数据库用户名constdb_user=root;//需要第三方指定自己的用户名//数据库密码constdb_pwd=;//需要第三方指定自己的库据库密码//数据库constdb_name=thinkphp;//需要第三方指定数据库//数据库表constdb_table=tbl_session;//需要第三方指定数据表//mysql-handleprivate$db_handle;//session-lifetimeprivate$lifeTime;functionopen($savePath,$sessName){//getsession-lifetime$this---lifeTime=get_cfg_var(session.gc_maxlifetime);//opendatabase-connection$db_handle=@mysql_connect(self::db_host,self::db_user,self::db_pwd);$dbSel=@mysql_select_db(self::db_name,$db_handle);//returnsuccessif(!$db_handle||!$dbSel)returnfalse;$this-db_handle=$db_handle;returntrue;}functionclose(){$this-gc(ini_get('session.gc_maxlifetime'));//closedatabase-connectionreturn@mysql_close($this-db_handle);}functionread($sessID){//fetchsession-data$res=@mysql_query(SELECTsession_dataASdFROM.self::db_table.WHEREsession_id='$sessID'ANDsession_expires.time(),$this-db_handle);//returndataoranemptystringatfailureif($row=@mysql_fetch_assoc($res))return$row['d'];return;}functionwrite($sessID,$sessData){//newsession-expire-time$newExp=time()+$this-lifeTime;//isasessionwiththisidinthedatabase?$res=@mysql_query(SELECT*FROM.self::db_table.WHEREsession_id='$sessID',$this-db_handle);//ifyes,if(@mysql_num_rows($res)){//...updatesession-data@mysql_query(UPDATE.self::db_table.SETsession_expires='$newExp',session_data='$sessData'WHEREsession_id='$sessID',$this-db_handle);//ifsomethinghappened,returntrueif(@mysql_affected_rows($this-db_handle))returntrue;}else//ifnosession-datawasfound,{//createanewrow@mysql_query(INSERTINTO.self::db_table.(session_id,session_expires,session_data)VALUES('$sessID','$newExp','$sessData'),$this-db_handle);//ifrowwascreated,returntrueif(@mysql_affected_rows($this-db_handle))returntrue;}//anunknownerroroccuredreturnfalse;}functiondestroy($sessID){//deletesession-data@mysql_query(DELETEFROM.self::db_table.WHEREsession_id='$sessID',$this-db_handle);//ifsessionwasdeleted,returntrue,if(@mysql_affected_rows($this-db_handle))returntrue;//...elsereturnfalsereturnfalse;}functiongc($sessMaxLifeTime){//deleteoldsessions@mysql_query(DELETEFROM.self::db_table.WHEREsession_expires.time(),$this-db_handle);//returnaffectedrowsreturn@mysql_affected_rows($this-db_handle);}}/***指定session有效的域名*ini_set(session.cookie_domain,.domain.com);*.domain.com是站点的主域名,请注意前面个有一个'.'*/define(MAIN_DOMAIN,.ichezone.com);//设置主域名/***不同子域名下共享session信息*COOKIE_DOMAIN=false禁止该功能*COOKIE_DOMAIN=true启用该功能*默认禁止*开启前提需要定义MAIN_DOMAIN常量*/define(COOKIE_DOMAIN,true);if(defined(COOKIE_DOMAIN)&&COOKIE_DOMAIN){if(defined(MAIN_DOMAIN))@ini_set(session.cookie_domain,MAIN_DOMAIN);}/***同一个主域名,不同服务器之间共享session信息*USER_SESSION=false禁用该功能*USER_SESSION=true启用该功能*默认禁止*开启前提需要建立mysql数据表*/ini_set('session.name','phpsessid');//设置色sessionid的名字define(USER_SESSION,true);if(defined(USER_SESSION)&&USER_SESSION){@ini_set(session.save_handler,user);$session=newSession;@session_module_name(user);@session_set_save_handler(array(&$session,open),array(&$session,close),array(&$session,read),array(&$session,write),array(&$session,destroy),array(&$session,gc));}//@ini_set(session.save_path,dirname(__file__)./tmp);//@session_id(demo);//ini_set(session.save_path,dirname(__file__)./tmp);session_start();include(DBsession.php);$_SESSION['usssser_oke']='xxssssss';$_SESSION['user_oke']='xxsss';?方式二:!--?phpini_set('session.name','sid');//设置色sessionid的名字ini_set('session.use_trans_sid',0);//不使用GET/POST变量方式ini_set('session.use_cookies',1);//使用COOKIE保存SESSIONID的方式ini_set('session.cookie_path','/');ini_set('session.cookie_domain','.ichezone.com');//多主机共享保存SESSIONID的COOKIE,注意此处域名为一级域名session_start();$_SESSION['usssser_oke']='xxssssss';$_SESSION['user_oke']='xxsss';?--方式三:一级域名:session_start();setcookie(session_id,session_id(),time()+3600*24*365*10,/,.i