欢迎光临一流素材网,免积分免费素材下载!
当前位置:首页 > 教程 > CMS教程>Ecshop

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

所属栏目:Ecshop更新时间:2018-04-19 来源:网络 原作者:不详 发布:deepdfhy浏览:0

免费开源可商用的PHP万能建站程序-DiYunCMS(帝云CMS)

最近在使用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 有帮助 0 没帮助 0 打赏 0
相关教程
给个评价吧