Ecshop实现用户退出购物车不清空的功能

2014-10-15 16:03:00 |  分类:Ecshop
ECShop模板在使用过程中会遇到用户退出再登陆时购物车里面的商品会被清空掉的,可以通过以下几点对程序做的简单修改即可实现会员退出不清空购物车的功能。
 
ECShop版本:V2.7.2 
 
涉及修改文件: 
 
1. \includes\cls_session.php 
 
修改步骤:
找到cls_session类的destroy_session方法,再找到
$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE  session_id = '$this->session_id'");
更改为:
$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE user_id ='0' AND session_id = '$this->session_id'");
这样当用户退出、关闭浏览器等操作注销session的时候,就不会再清空登录用户的购物车了。
 
 
2. \includes\lib_main.php
修改步骤:
在本页找到update_user_info函数,添加代码
 

/* 将当前user_id写进cart表中的user_id */
    $sql = "update " . $GLOBALS['ecs']->table('cart') . " set user_id =" . $_SESSION['user_id'] . " where session_id = '" . SESS_ID . "'";
    $GLOBALS['db']->query($sql);

    /* 将上次登录的购物车的session_id更新为当前登陆的session_id */
    $sql = "update " . $GLOBALS['ecs']->table('cart') . " set session_id ='" . SESS_ID . "' where user_id = '" . $_SESSION['user_id'] . "'";
    $GLOBALS['db']->query($sql);

题外话,到此还有一个问题是:
假设场景:
1、登录前,往购物车内添加了一款商品GW2014,productId为1125。
2、登录前,如果购物车就有了同款商品。
就会出现这样的情况,购物车内,就会出现两条一样的数据。
解决这样的问题,就需要在update_user_info再增加合并相同数据的代码。
 
 
2014-10-15 16:03:00 |  阅读( 0 ) |  评论( 0)
分享到: