警惕,360浏览器可能引起session丢失

2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家

用360浏览器添加产品到购物车的时候,购物车列表是空的。
这个问题折磨了我快2天了,略去过程,直接说结果。
某些情况下,在同一个标签页中,用$_SERVER['HTTP_USER_AGENT']取得360浏览器提交的内容也是会变化的,具体见下面两段。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)

这就是问题所在,有时说自己是IE7,有时说自己是IE8。

于是在cls_session.php文件(96行)的$this->gen_session_key($tmp_session_id) == substr($this->session_id, 32)的判断就通不过,于是就重新建立了一个session ID,从web页面的 表现上看就是session丢失了。

回答:
恩,说的对

function gen_session_key($session_id)
{
static $ip = '';

if ($ip == '')
{
$ip = substr($this->_ip, 0, strrpos($this->_ip, '.'));
}

return sprintf('%08x', crc32(!empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] . ROOT_PATH . $ip . $session_id : ROOT_PATH . $ip . $session_id));
}

这里明显用到了 $_SERVER['HTTP_USER_AGENT']

不是吧,要改数据库,这么严重

本地测试才会的,是因为装了360的网银控件

无须改数据库啊

同事最近老是在反馈360下面的问题。我就跟他们说,要不就用原生的IE。要不就用火狐或者Chrome。唉,用360浏览器的孩紫上辈子都是折翼的天使。

同样问题 的顶下

那这个怎么解决呢?

好吧,既然群里面依然有人在纠结这个问题,我就说一下解决方法。
打开cls_session.php,找到函数gen_session_key()的定义部分,将里面的return那一句话注释掉,换成return sprintf('%08x', crc32(ROOT_PATH . $ip . $session_id));
我是这么改的,暂时没发现什么副作用。

这个需要修改一下数据库就可以了,我的之前也出现了这个问题,现在已经好了

怪不得有人说添加购物车的时候是空的。。还有其他解决方法吗?

360快速浏览器,打开网页不稳定啊,有的要卡半天



关注一下,没有看明白!

同事最近老是在反馈360下面的问题。我就跟他们说,要不就用原生的IE。要不就用火狐或者Chrome。唉,用360浏 ...
fentoo 发表于 2011-8-22 09:21



也是