ECSHOP购物车商品自动清空问题解决方法改善会员体验
来源:互联网 发布:linux下安装bugzilla 编辑:程序博客网 时间:2024/06/09 22:52
ECSHOP的程序的购物车会自动清空,而且有多个清空设置,防不胜防:
1、当用户的IP变化后,购物车自动清空;
2、当浏览器关闭后,购物车自动清空;
3、当用户退出登陆后,购物车自动清空;
4、管理员在后台登陆后,购物车自动清空。
几乎可以说,不管是不是会员、不管有没有登陆,购物车的数据是不保留的,甚至管理员登陆后台都会把购物车清空一次,似乎ECSHOP对购物车有刻骨之仇,分分钟要把购物车的数据清理掉。这给会员的体验就很差。很多会员反映:花了一下午时间挑好商品,准备第二天再下单,结果第二天一看,购物车里什么也没有了。
想保留会员的购物车,需要修改程序。网络上给出了很多种修改方案,但都不全面,购物车依然会被清空。只有把程序中所有清空代码都修改掉,才起作用。
1、限制购物车仅登陆后使用,以免未登陆使用购物车后数据被清空。
flow.php找到
if ($_REQUEST['step'] == 'add_to_cart'){ include_once('includes/cls_json.php');
在下面添加
if ( empty($_SESSION['user_name'])) { $json = new JSON; $result['error'] = "999"; $result['message'] = "请先登录"; die($json->encode($result)); }
2、不自动清空会员的购物车.
关闭浏览器时,用户信息会更新,购物车被清空。退出登陆更是清空。我们修改为只清空游客的购物车,会员的不清空。(网络上这一步有几个版本的代码,都搞得很复杂,说还要把lib.main.php里面加入多少代码来“更新购物车”,那是不需要的。因为购物车信息本来就已写入数据库了,此地只是阻止清空就行了。而且有些更新购物车的代码是错误的,真的添加上去后,购物车会出错,比如同一个商品有多个颜色时,只能买一种颜色。想买两个颜色就搞不成。所以不要画蛇添足去搞什么“更新购物车”)。
includes/cls_session.php找到destroy_session()函数,把其中
/* ECSHOP 自定义执行部分*/ if (!empty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' "); }
替换为
/* ECSHOP 自定义执行部分(不清空会员的购物车) */ if (!empty($GLOBALS['ecs'])) { $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' AND user_id = '' "); }
3、换IP时不影响购物车
将用户的IP存入Cookie,或者在生成SESSION时,不取IP。这步修改对动态IP用户无法使用购物车也同时解决。这里IP存入Cookie的有效期是10天,也就是10后购物车依然被清空了。如果想保留更久或更短,可以把864000改为其它数字。一般来说购物车数据留10天已足够了,10天了还未下单,基本上就不会下单了。而10后购物车清空,不会造成数据库压力。
includes/cls_session.php把
$this->_ip = real_ip();
替换为
if(isset($_COOKIE['real_ipd']) && !empty($_COOKIE['real_ipd'])) { $this->_ip = $_COOKIE['real_ipd']; } else { $this->_ip = real_ip(); setcookie("real_ipd", $this->_ip, time()+864000, $this->session_cookie_path); }
4、管理员登陆时不清空购物车
特别不能理解管理员登陆后台,居然把全站的购物车都清空。难道管理员成了清洁工?若干会员在前台选购,选着选着你管理员要进后台看一下,你一进去,前台会员的购物车全空了、全下不成单了--这都什么事儿啊!也不知道是哪个脑残设计的这么一个步骤。
找admin/privilege.php,以下代码注解掉
// 清除购物车中过期的数据 clear_cart();
再找
// 删除cart中无效的数据 $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id NOT " . db_create_in($valid_sess); $GLOBALS['db']->query($sql);
也注解掉。
- ECSHOP购物车商品自动清空问题解决方法改善会员体验
- [ECSHOP] 终于解决ECSHOP的购物车自动清空问题,改善会员体验
- 终于解决ECSHOP的购物车自动清空问题,改善会员体验
- ecshop完美解决前台和后台自动退出、购物车自动清空
- ecshop 购物车为空,您的购物车中没有商品!解决办法
- 清空购物车
- ECShop:会员退出不清空购物车
- 购物车的单项增加减少商品和批量减少增加商品以及清空购物车的实例演示
- ecshop 批量删除购物车商品
- HTML angular购物车:加减按钮改变数量+全选+低于1时提示删除商品+计算所有商品总价+清空购物车+单独删除+输入内容小于1时,自动变为1+反选
- ECSHOP清空购物车后挑转指定的页面
- magento 清空购物车
- Magento清空购物车
- ECSHOP如何解决购物车中商品自动消失问题 session 失效 丢失的问题
- ecshop用户登录问题及ecshop购物车问题解决办法
- ecshop二次开发之 修改ecshop购物车退出后保留购物车购买的商品
- ReactNative清空购物车-学习笔记
- AngularJS+购物车+全选+清空+删除
- prestodb安装配置 —参考prestodb官方文档配置
- 著名的C++三大库boost、loki、stlport,及其他c++库应用简述
- iptables指令详解
- Android Design Support Library之TabLayout
- Java中的Timer源码分析及缺陷
- ECSHOP购物车商品自动清空问题解决方法改善会员体验
- JSTL标签EL表达式学习
- 微信企业号开发部分总结
- iOS程序猿之图片压缩
- hibernate笔记: 关于懒加载和load()方法之三
- C语言内存管理分析
- android studio中开发百度地图导入.os和.jar方法
- JAVA线程池
- hive(一) hql摘要