两个网站:
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等.
博客介绍了两个网站think.local和think2.local共享session的方法。通过在think.local执行js脚本,将cookie的PHPSESSID传递到think2.local,修改其cookie中的PHPSESSID,可实现共享。在同一服务器且使用php默认session文件夹时,dump(session())可获取一致值,不同服务器可考虑存信息到数据库等。
773

被折叠的 条评论
为什么被折叠?



