最近一直在弄网站的投稿系统,用的是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下先后加密的和会员中心的就不一样了,导致过期问题?额,只是猜测,期待官方给出答案。不过如果官方不能
解决过期问题,下次更新时还是换回来吧。否则原来的目的没有达到,反而增加了新问题。