新闻中心

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

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服