phpcms V9.1 Build 201107022 IE7 登陆后提示,会话已过期的解决方案


最近一直在弄网站的投稿系统,用的是phpcms的程序呢,发现IE7登陆总是提示回话已过期,经查询搜索,在官方找到解决的办法,解决办法如下:

 

出现问题:
1、登陆后提示 会话已过期。

2、登陆成功进入会员中心时提示会话已过期。

 

解决方案:
1、修改文件 根目录phpcmsmodulesmemberindex.php

第17行

$this->http_user_agent = str_replace('7.0' ,'8.0',$_SERVER['HTTP_USER_AGENT']);


修改为

$this->http_user_agent = $_SERVER['HTTP_USER_AGENT'];

 

2、修改文件 根目录phpcmsmodulesmemberclassesforeground.class.php

第29行

$auth_key = md5(pc_base::load_config('system', 'auth_key').str_replace('7.0' ,'8.0',$_SERVER['HTTP_USER_AGENT']));

 

修改为

$auth_key = md5(pc_base::load_config('system', 'auth_key').$_SERVER['HTTP_USER_AGENT']);

 

问题原因:

不知道官方哪次的更新把 .$_SERVER['HTTP_USER_AGENT'] 改成了 str_replace('7.0' ,'8.0',$_SERVER['HTTP_USER_AGENT'])

 

 

所以会出现上面的正状,正常使用没有什么问题,但是整合UC并开启同步登陆后问题出现

 

问题推断:str_replace('7.0' ,'8.0',$_SERVER['HTTP_USER_AGENT'])是取当前浏览器版本做一个IE 7.0 8.0 的替换。

 

例如,IE7内核360浏览器演示

 

$_SERVER['HTTP_USER_AGENT'] --------取得

 

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 677; .NET CLR 2.0.50727; AskTbCFTP2V5/5.11.3.15590)

 

str_replace('7.0' ,'8.0',$_SERVER['HTTP_USER_AGENT']) -------------------取得

 

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; QQDownload 677; .NET CLR 2.0.50727; AskTbCFTP2V5/5.11.3.15590)

 

至于为什么这样用就不得而知了

 

md5(pc_base::load_config('system', 'auth_key').$_SERVER['HTTP_USER_AGENT'])

 

又把这个东西做了一次加密,放到了COOKIE里。做浏览器的兼容吗?费解。

 

至于为什么整合后出问题呢,推断问题可能出在PHPSSO那边,是不是那边也有这个$_SERVER['HTTP_USER_AGENT'],没有换过来,结果7.0还是7.0,没做替换导致IE7下先后加密的和会员中心的就不一样了,导致过期问题?额,只是猜测,期待官方给出答案。不过如果官方不能

 

解决过期问题,下次更新时还是换回来吧。否则原来的目的没有达到,反而增加了新问题。


豫ICP备12024565号-1   E-mail:admin@hlc8.com