周梦康 发表于 2014-04-07 3271 次浏览 标签 : session跨域

1.场景一

a.com,blog.a.com,bbs.a.com同一域名,假如这三个域名指向三个不同的服务器,但是同用一个用户数据库表。

那么在存储session之前做

ini_set('session.cookie_domain', '.a.com');

然后建立一张存session记录的表

CREATE TABLE sessions (
 session_id varchar(32) NOT NULL,
 session_last_access int(10) unsigned,
 session_data text,
 PRIMARY KEY (session_id)
)

这样每次一个子域名下登录之后,再去打开别的子域名的时候,如果在当前一级域名.a.com$_COOKIE['PHPSESSID'],当然也可以修改sessioncookie里面保存的健名。只需要对$_COOKIE['PHPSESSID']做数据库查询,如果能查询到,即做登录许可处理。

如果客户端禁止了存储cookie呢?

2.场景二

www.sina.com.cnweibo.com不同域名的情况下,可以使用iframe+p3p协议来解决

var _frm = document.createElement("iframe");
_frm.style.display="none";
_frm.src = "http://www.b.com/setcookie.php?cookie_str=xxxxx";
document.body.appendChild(_frm);

然后在www.b.comsetcookie.php里做p3p声明

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

这样就能接受传过来的$_GET['cookie_str']参数了

参考资料http://www.cnblogs.com/wrmfw/archive/2011/09/05/2166897.html

👇 下面是我的公众号,高质量的博文我会第一时间同步到公众号,给个关注吧!

评论列表