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

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


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

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


解决方案:
1、修改文件 根目录\phpcms\modules\member\index.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、修改文件 根目录\phpcms\modules\member\classes\foreground.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下先后加密的和会员中心的就不一样了,导致过期问题?额,只是猜测,期待官方给出答案。不过如果官方不能


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

你可能感兴趣的:(server,浏览器,IE,user,System,Build)