新闻中心
Ecshop退出登录后会清空购物车的Bug优化
作者 / 无忧主机 时间 2015-12-05 03:25:36
Ecshop退出登陆后,会清空购物车。熟知Ecshop的站长同学们应该都知道有这样的Bug问题,官方更新也一直未处理。网上类似的教程相当多,很多都是无效的或者按照教程修改后网站报错。说句不好听的,很多文档都是复制来复制去,至于文档的有效性都未测试有效就发布于网络上,这样很容易让新手站长误入歧途。在此说明无忧主机官网所归纳的所有文档,都会在php虚拟主机内测试有效才会发布在官网中。但是由于版本更新导致文档所介绍的功能失效,我们也会陆续更新。 完美解决:Ecshop退出登录后会清空购物车的Bug优化 1、文本编辑器(editplus)打开修改文件:includes/cls_session.php 查找:
if (!empty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' ); }修改为:
if (!emptyempty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' AND user_id = 0");//www.lyecs.com 只清空匿名** }2、文本编辑器(editplus)打开修改文件:includes/init.php 查找:
define('SESS_ID', $sess->get_session_id()); //判断是否存在user_id的session,避免高版本PHP报错 if(isset($_SESSION['user_id'])){ //如果存在会员登录 if($_SESSION['user_id']>0){ //取得对应user_id的session MD5码,后面加入'@www.51php.com'自定义的自符串加密。 $user_session=md5($_SESSION['user_id'].'@www.51php.com'); //'@www.51php.com'内容可自行修改 //取得之前的session_id,www.51php.com $old_session=$sess->get_session_id(); //如果会员的session_id和原先的session_id不同(则为新登录情况),则将购物车内原session_id的商品,更新为会员下的商品! if($user_session != $old_session){ $sql="update ".$GLOBALS['ecs']->table('cart')."set session_id='".$user_session."',user_id='".$_SESSION['user_id']."' where session_id='".$old_session."' "; $GLOBALS['db']->query($sql); } //定义新的会员唯一session_id define('SESS_ID',$user_session); }else{ //不存在会员,继续用原有的session_id define('SESS_ID', $sess->get_session_id()); } }else{ //不存在会员,继续用原有的session_id define('SESS_ID', $sess->get_session_id()); }3、同理,mobile/includes/init.php也改下。第2条是重点,已全部注释。 无忧主机相关文章推荐阅读: 如何在ECSHOP后台管理的时候显示扩展分类 ECSHOP修正RECIEVE.PHP判断不严谨导致邮件自动确认收货 ECSHOP如何实现自定义某某等级会员以上才支持货到付款的方法
本文地址:https://www.51php.com/ecshop/21058.html
上一篇: phpcms怎么实现文章的数量的查询
下一篇: 优化ecshop让首页“真”静态