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

发现原因:
在局域网内使用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系统中,而且该现象会发展,发展到这个键所在的一列都会挨个没反应,然后发展下一列。。最后发展成抛弃键盘直接使用虚拟桌面键盘的地步。。。

补充一篇:java解决办法

 一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来都是cookie惹的祸,它不会区分端口,造成这多个站点不断的后来的覆盖前面的,从而造成session的丢失。
        解决方法:
方法1:将不同的多个应用服务在不同的虚拟主机中,或者映射不同的IP进行部署。
方法2:对应tomcat服务处理方式:修改coocie的名称保证cookie不重复,即jsessionid的不重称,保证ip相同下sessioncookiename域名不同。
           1、tomcat5修改方法
在启动项中增加org.apache.catalina.SESSION_COOKIE_NAME参数
linux
JAVA_OPTS=’-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname‘
win
set JAVA_OPTS=”-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname“
           2、tomcat6和tomcat7修改方法相同
       tomcat增加参数对所有Context生效,影响甚大,所以到以后的版本可以就仅针对Context设置了
        在Context容器标签上增加sessionCookieName参数
<Context path=”/” docBase=”webapp” reloadable=”false”sessionCookieName=”yoursessionname”></Context>
          3、weblogic修改方法
          设置各个应用使用不同的cookie-name。
         weblogic的设置(设置不同的cookie-name):

         请在WEB-INFWeblogic.xml添加如下代码

                  <session-descriptor>      

                             <cookie-name>JSESSIONID1</cookie-name>  

                  </session-descriptor> 

时间: 2024-09-19 15:51:01

php session 同ip不同端口的多个网站session冲突的解决办法的相关文章

关于IP地址冲突的解决办法

通过无线路由的高级选项DHCP服务器设置,我们可以解决IP的问题.如何设置无线路由高级选项,大家在网络上会找到很多方法,下面JCG给大家介绍的就是关于IP地址冲突的解决办法. 一.DHCP服务器 DHCP(DynamicHostConfigureProtocol,动态主机配置协议)便于统一规划和管理网络中的IP地址,这种网络服务有利于对校园网络中的客户机IP地址进行有效管理,而不需要一个一个手动指定IP地址. DHCP服务器在一个使用TCP/IP协议的网络中,每一台计算机都必须至少有一个IP地址

ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法

一.概述: 今天QQ收到一位朋友的求助,如下环境,查看了ASA的配置,策略是全通,居然无法访问,也感到困惑. 如是用GNS3搭建环境测试,在防火墙两侧进行抓包,发现TCP三次握手正常,但是位于防火墙内侧客户端发出的http get包却被防火墙丢弃了,用google 输入关键字:ASA tcp 2000搜到如下链接: http://blog.csdn.net/yangcage/article/details/1787558 http://www.petenetlive.com/KB/Article

XAMPP和VMware占用443端口冲突的解决办法

  今天安装了一个VMware Workstation,发现XAMPP的Apache就启动不了.看了一下错误日志,似乎是VMware Workstation占用了443端口导致冲突引起的.查看了一下,原来VMware Workstation有个共享虚拟机的服务,占用了443端口. 对于单机安装虚拟机来说,这个功能没有用处,禁用掉就可以了.操作步骤如下: 1.打开VMware Workstation,点击菜单中的"编辑-首选项"; 2.找到左侧功能列表中的"共享虚拟机"

C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗?

问题描述 C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗? C++UDP组播编程中,组播地址(组播号)与组播地址的关系是什么?和TCP中IP和端口的关系一样吗?另外,一台计算机上(不经过路由器或交换机)只能有一个组播吗?急求!!! 解决方案 组播地址和多播地支的关系与TCP中IP和端口的关系不太一样. 首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备驱动程序.通常网卡仅接收那些目的地址为网卡物理地址或广播地址的帧. 使

同Ip不同端口 使用绝对路径可以找到项目里的图片文件吗

问题描述 同Ip不同端口 使用绝对路径可以找到项目里的图片文件吗 同一个服务器里请求图片,127.xxxx:8080/1.jpg可以访问到127.xxxx:8088/1.jpg就访问不到了,在线等,求大神,十分感谢 解决方案 不同端口是不同的网站,确认你网站的目录都是一样的没有,没有当然找不到图片 解决方案二: 要看你不同端口绑定的站点项目的目录是哪个并不是说同一个服务器的站点就在同一个目录里,每个端口都可能对应不同的站点项目 解决方案三: 百分之百的不行 解决方案四: 求一个解决的法子啊,

服务器-linux下同一个IP不同端口vncserver怎么配置

问题描述 linux下同一个IP不同端口vncserver怎么配置 两个服务器挂在同一个IP地址上,但是不同的端口,一个是默认的端口22,另一个是端口自己配置(比如10000),想要在这两个服务器上开启vncserver,默认的端口22可以开启,另一个端口10000的该怎么配置呢?求助攻啊

c#编程-C# 怎样通过ip和端口向一台设备发送指令

问题描述 C# 怎样通过ip和端口向一台设备发送指令 我有这台设备的维护书,上面有修改设备出厂ip地址的指令,还有回复指令这些,怎么修改??求大神!急急急 解决方案 直接socket编程呗,知道端口和ip直接发送数据流就行吧 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace Client { class P

易语言如何网截特定端口报文,而后转发指定ip特定端口,求指导

问题描述 易语言如何网截特定端口报文,而后转发指定ip特定端口,求指导 最近在研究魔兽不同网段联机平台,本人用易语言编程,网截功能不知如何用.提问是获取本机6112端口报文,而后转发指定ip的6112端口.求指导. 解决方案 数据报功能可以实现,但繁琐且只能应答,确不能实现联机,因此考虑用网截hook 解决方案二: 我的大哥啊,请你下个补丁试试吧!

socket-android 客户端开发好之后下载到手机上,ip 和 端口应该怎么设置才能连接到我的电脑(服务器)

问题描述 android 客户端开发好之后下载到手机上,ip 和 端口应该怎么设置才能连接到我的电脑(服务器) android 客户端开发好之后下载到手机上,ip 和 端口应该怎么设置才能连接到我的电脑(服务器) 解决方案 HTTP请求的地址改为你的ip和端口就可以了.例如:http://192.168.1.29:80/api.php?device=1111