当前位置:首页 > 教程中心 > CMS教程 > EcShop

Ecshop前台后台登陆自动退出的问题解决办法

所属栏目:EcShop 时间:2018-04-19 来源:网络 作者:不详 点击:

最近在使用ecshop制作商城的时候,发现一个奇怪的问题,有用户反馈在公司多台电脑上,多款浏览器上,不管是登录后台还是登录前台,频繁的退出,登录成功后,刷新或者点击其它页面,都会自动退出,但其它用户以及本人电脑测试均正常,百思不得解。

后百度才知道,与局域网IP地址有关,说是IP地址发生了变化,变化导致session失效,于是查看了下ecshop的session机制。其中获取session key的函数是这样


includes/cls_session.php(移动端的也类似:mobile/include/cls_session.php)

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

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

  return sprintf('%08x', crc32(ROOT_PATH . $ip . $session_id));
}

当IP发生变化时:substr($this->_ip, 0, strrpos($this->_ip, '.'))获取到的IP段,只要不在同一个IP段内便无法获得相同的session key;进而也就无法获得session的具体信息,也就导致重复登陆。这也是为什么本地无法重现问题的原因。好吧,问题找到了。那么怎么解决呢?最简单的办法就是将获取IP段的部分去掉,于是修改后的函数也就成这样了。

如下图所示:

image.png

这样就OK了。


请站长喝杯咖啡?

站长一直坚持白天工作、晚上熬夜更新素材,付出了巨大的精力和时间,其中的辛酸难以言述。

坚持免积分、免登录、无任何限制下载!如果本站素材对你有用,不妨考虑请站长喝杯咖啡鼓励一下!

共有 0 条评论

给个评价吧

验证码: