当前位置:博客首页>>建站经验 >> 阅读正文

同ip不同端口的多个网站session冲突的解决办法

作者: 郑晓 分类: 建站经验 发布于: 2014-09-12 08:11 浏览(7,276) 评论(2)


发现原因:
在局域网内使用IP加端口的访问方式搭了两个相同程序的站,结果发现用户在一个站下登录后,在另一个站也同时登录了,在一个退出后,另一个站也同时退出了。看了下程序发现两个站都是使用纯session方式记录登录状态,Cookie中只保存有PHPSESSID这个数据,而且由于使用的IP加端口形式,发现他们两个站的Cookie作用域是相同的,都是属于该服务器IP,这也就是导致这个问题的原因了。

解决方法:
/*————————————————-以下是废话————————————————-*/
1.把程序改为使用cookie记录使用的,两个站使用不同的cookie前后缀? 还是算了,懒的改。

2.由于服务器上有DNS服务,给这两个站绑定两个不同的域名,然后给局域网内的所有用户修改DNS地址?我去,那么多台电脑,只能我一个个去改,也不符合我们这种技术屌的风格啊。。 而且还是懒。。。算了。

3.给服务器增加一个IP,给两个站绑定到不同的IP上去,局域网那么多的IP,闲着也是闲。方法可以行,试着弄了下又发现问题了:直接在本地连接中给这个网卡加一个IP,发现在不同的网关中,会提示MAC地址冲突。由于不太懂网络搭建,想添加一个虚拟网卡, 给虚拟网卡分配一个IP不就行了?两个网卡两个MAC应该没问题了吧,试了下发现虚拟的东西只能在本台计算机上使用。其它计算机是ping不通无法使用的。。 虽然后来又发现该服务器有两个物理网卡,只是第二个网卡没线插了也没权限去机房搞网线插。。还是算了。

4.最后还是通过程序上实现了。。。
/*————————————————-以上是废话————————————————-*/

在程序的common文件或是其它公用文件中加入一句php代码,如下:
ini_set(‘session.name’, ‘PHPSESSID_RS’);

当然 第二个参数就是session在保存到cookie时使用的名字,你可以自己设置自己喜欢的。。。

就是因为所有程序使用的session名都是在php.ini中设置的默认名称PHPSESSID, 所以 如果同域(同IP不同端口)下的网站之间使用session时会出现共用冲突情况。现在两套程序使用不同的session.name来保存sessionid,所以就不会产生session的冲突问题了。

问题解决!
PS:马蛋, 我的键盘又有两个键坏了。。问一句,为什么键盘会出现有的键按了没反应,即使在安全模式(顿号)PE系统中,而且该现象会发展,发展到这个键所在的一列都会挨个没反应,然后发展下一列。。最后发展成抛弃键盘直接使用虚拟桌面键盘的地步。。。

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/site-session-different-ip-port.html

同ip不同端口的多个网站session冲突的解决办法:目前有2 条留言

用户评论头像 南通热线发表于 2014年10月27日 09:09[回复]

有用,收藏了! :mrgreen:

用户评论头像 迅速提升知名度发表于 2014年09月12日 18:03[回复]

session一直都是被处理的对象。。 😆 😆