News Contents
信息中心

让ecshop购物车不自动清空的方法

发表日期:2018/10/11      浏览次数:

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);

 

也注解掉。 


盛大建站承接个人、公司、企业的网站建设、网页设计、网店制作、独立商城制作、外贸网站制作,也承接同行介绍的业务,欢迎联系!
本站承接主要业务如下:
1、提供免备案虚拟主机(网站空间),有独立国内服务器、高速美国服务器、香港服务器、韩国服务器、日本服务器,>> http://www.fuanxx.com
2、网站建设:个人网店制作、企业建站、公司网站、新闻、下载等;论坛、博客网站搭建,承接外贸英文站制作
3、承接阿里巴巴、京东、淘宝、天猫等的商品数据采集
4、网站防钓鱼,可以过360、QQ、搜狗、金山、微信拦截
5、要就发IP网站限制访问系统,防止同行抄袭并保障海外客户访问不受影响,>> http://www.198ip.com
  下一篇:没有了!
十年如一日,我们专注于提供高品质 定制网站建设服务!
您的信任,我们的责任,期待与您的合作!