首页 > 请教大家一个关于thinkPHP session跨域问题

请教大家一个关于thinkPHP session跨域问题

thinkPHP中我有两个模块:Home和WAP两个,同时设置了域名:www.domain.com和wap.domain.com,现在我想在wap模块获取Home下的session,可是无论我怎么设置都获取不了。
ini_set也不行。网上查的也没有搞定。
请问是什么问题?谢谢大家。

更新:

我自己找到方法解决了,thinkPHP默认开启session_start,我主动关闭后,在入口文件加ini_set设置,再开启session_start就能解决了。


用redis来存储回话信息,设置回话cookie 存储在 domain.com 顶级域名下。这样www.domain.com 和 wap.domain.com 都可以拿到这个cookie。然后去redis中取出回话信息来鉴定用户的回话状态。


继承同一个公共控制器


上面的回到基本都是乱扯, SESSION默认是基于COOKIE的,楼主同时设置了域名:www.domain.com和wap.domain.com 这是两个域名,既然是两个域名,那么每个域的COOKIE肯定不同的,既然cookie不同
SESSION能获取到才怪。
解决方案:
1.全部采用COOKIE加密保存回话
2.用redis 等k-v存放SESSION信息


不妨试试缓存(memcache或redis)来实现Session。


Session是基于cookie来实现的,php里面一般用cookie['PHPSESSID']来关联 sessionID
可以参考一下CSRF攻击的方式
从www 发起到wap的请求(就是带着www的cookie去访问wap),获取到www cookie中的sessionid(请求在wap上),然后改变wap的sessionid
PS:我没试过,但是从逻辑上来说,应该可以的。可以作为参考!或者搜索 cookie跨域

【热门文章】
【热门文章】