欢迎光临
我们一直在努力

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下先后加密的和会员中心的就不一样了,导致过期问题?额,只是猜测,期待官方给出答案。不过如果官方不能

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

赞(0)
未经允许不得转载:飘云 » phpcms V9.1 Build 201107022 IE7 登陆后提示,会话已过期的解决方案
分享到: 更多 (0)