最近在搭建ecmall平台的时候,发现了一个很纠结的问题:
本地搭建ECMALL的时候,用户登陆没一点问题
结果在服务器上搭建后,就出现用户登录后提示成功,但立刻跳转到登录页面,其实还是未登陆,前后台都是如此
网上找遍了,发现很多人出现过这问题,官方一看,也没看到他们有什么好的解决方法
没办法自己找问题吧
以前有接触过ecmall相关产品,知道他们处理登陆状态一贯喜欢用cookie
于是选择了用狐火查看cookie的值
本地成功登陆后,cookie名和值如下
ECM_ID:ed99a55c9ffdbb7660471fe879d515dddca957c8 --------40位的值
服务器上登陆不了的cookie名和值如下
PHPSESSID:72f5996da2921211563571ee0259dab9------------32位的值
纠结了,因为对这系统代码不熟悉,想不通什么原因
以为是服务器没配置好,于是查看服务器配置,该服务器用的是,PHP5.2.4,apache,windows2003
结果是服务器配置session,cookie方面的都没问题
没办法,换服务器吧,于是换到另外台服务器,该服务器用的是PHP5.2.5,IIS6,windows2003
结果还是不能成功登陆,查看这个服务器的PHP配置情况,一切正常
没办法,2个服务器上,删了ECMALL的安装版,重装吧
一次,二次。。。。无效
本地重装
一次,二次。。。。怎么装都没问题
查看下本地PHP版本是 5.3+的
换自己的笔记本吧,结果安装后也正常,查看PHP版本是5.3+
难道是PHP版本引起的?因为没有时间在大量环境测试,不敢断定是不是PHP版本问题,
实在没办法,只有再次去看ECMALL 里文件session.lib.php 的代码
发现在135-136有这样一段被注释的代码:
if (!$this->session_id) { $this->gen_session_id(); session_id($this->session_id . $this->gen_session_key($this->session_id)); /*setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id), 0, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);*/ }
我尝试去掉注释
结果意外情况出现了
不管,后台还是前台,用户都能登陆了,兴奋啊
为了确定这代码不是我无意中注释的,我特意到官方下载了一份新的,发现里面确实也注释了
官方写了这代码,为什么又注释了呢?。。。。。。
解决问题就好
再次查看下cookie
结果发现
登陆成功后,不仅有
40位的ecm_id cookie值
还有32位的phpsessid cookie值
。。。。。。。。。。。。。。。
纠结了我2,3天啊
可以进我博客进行交流