Tools
首页
画图
音乐
采集
记事
博客
实验室
登录
lypeng
146
文章
11
分类
46
记事
分类
生活-[23]
Linux-[24]
前端-[9]
数据库-[16]
PHP-[31]
git-[7]
其他-[6]
python-[20]
算法-[4]
React-Native-[4]
中草药-[2]
广告位1
广告位2
首页
/ PHP
返回列表
关于多域名的session和cookie选择问题
阅读:766
发布:2017-01-12
作者:lypeng
折腾一下午,总算好了,写点感悟! 对这两个概念理解的还是模糊,不够清楚!今天算是更进一步的了解了一下! 首先说说遇到的问题: 最近做的平台是多用户的商城,当用户注册成功后,系统会自动给每个用户分配一个二级域名,并且每个用户可以绑定自己的独立域名。二级域名命名规则(http://用户名.sd.com) 用的是Tp3.2.3开发的 关于session的公共配置如下:
'SESSION_AUTO_START' => true, 'SESSION_OPTIONS'=>array( 'domain' =>'.sd.com', 'expire' => '7200', ),
列下平台的几个域名: 网站前端:www.sd.com 用户后台:u.sd.com 用户网站:demo.sd.com,...... 这样一设置,使得任何以sd.com结尾的域名都可以共享session,例如:用户通过www.sd.com/login.html登录后,进入u.sd.com时的session共享问题 然后问题出现了,用户绑定了自己的域名www.xxx.com demo.sd.com可以打开,正常登录购买下单 www.xxx.com不能获取到session,无法登录 问题总算说完了,不知道你明白了没有?
//================华丽的分割线======================= 解决过程: 要点:session是不能用了,那还有什么可以保存用户的登录状态 session,cookie,文件缓存,memcache,数据库保存 尝试S方法 登录成功后,来个:S('user_id',5);,但这样只能登录一个用户,后登录的就把先登录的挤下去了! 继续:S('user_islogin_5',1)//将用户5的登录状态设为1,可是没法判断谁是谁 再来memcache 配置与测试倒是很简单,一会儿就完了,开始写代码 $memcache->set();//同样问题 还有数据库 数据库可以给每个用户增加个islogin字段,但是前台没法判断,想想没有去操作 继续 登录后把用户的id发送过去,嗯,试了试这样可以,真的可以,但是太容易被别人利用了 换个token,嗯,这个不错,www.xxx.com/token/kdfskldfkldsfldf.html,用户注册后给他分配一个token,登录成功后把token作为参数去在网址之间跳转,但是不好的一点每个网址后面都必须跟个一长串token值 最后尝试一下cookie 哇哇哇~这个 可以 ,真的可以~问题就这么被解决了???
我都不敢相信,我开始都怀疑过cookie,因为session的机制好像是与cookie有点关系,唉,还是对这两个概念太模糊了,没有了解清楚~ 说重点:session与cookie都是不可跨域名的 session由于上面的设置,demo.sd.com可正常登录操作,但是www.xxx.com就不行了,因为记录不到 cookie,demo.sd.com可以登录,www.xxx.com也可以登录,但应该是两个会话,互不干涉 最后解决是:判断用户如果绑定了自己的域名后,将系统分配的二级域名跳转到用户的主域名,即将demo.sd.com跳转到www.xxx.com,这样就只有一个cookie了! 再附一篇文章,关于session与cookie的存储机制:
http://blog.csdn.net/taozi8023/article/details/51423144
大家有时间的话,可以好好读读,增加营养~更进一步认识下会话存储的东西~ 最后感谢陶士涵同学一下午的探讨和建议!
------本文结束
感谢阅读------
上一篇:
windows服务器memcache配置与测试
下一篇:
微信支付总结(一)前期准备