两个网站:
think.local
think2.local
主要原理是:
1、通过在think.local执行js脚本,访问think2.local的接口,将cookie的PHPSESSID传递过去
2、修改think2.local的cookie中的PHPSESSID与think.local一致,从而在think2.local中可以与think.local访问同一个session
3、补充:在同一个服务器中,而且两个网站使用的session文件夹都是php默认
主要代码:
think.local部分:
-
//测试同步登录
-
public function test(){
-
session('uid',111);
-
$session_id=session_id();
-
//同步测试
-
$gotourl='<script type="text/javascript" src="http://www.think2.local/api/SynLogin/index/token/thinkphp/session_id/'.$session_id.'"></script>';
-
//echo htmlspecialchars($gotourl);exit;
-
echo $gotourl;
-
echo 'ok';exit;
-
}
think2.local部分
-
//同步登录页
-
public function Index(){
-
$token=I('get.token');
-
if($token!='thinkphp'){
-
echo 'wrong';exit;
-
}else{
-
//同步登录操作
-
$session_id=I('get.session_id');
-
//$session_id='mh23hdn3h34j2efpno1k95bhm6';
-
cookie('PHPSESSID',$session_id);
-
}
-
}
在think2.local的任意操作中 dump(session());即可获取与think.local一致的session值,从而实现共享session。
PS:可以做跨域名登录了,如果是不同服务器,可以考虑将session信息存入数据库/Redis/Memcached等.