ECshop不清空购物车的方法

ecshop 清空购物车机制:

1、当用户的IP变化后,购物车自动清空;
2、当浏览器关闭后,购物车自动清空;
3、当用户退出登陆后,购物车自动清空;
4、管理员在后台登陆后,购物车自动清空。

我用的方法:

1.includes/cls_session.php找到destroy_session()函数,把其中

[code lang=”php”]
if (!empty($GLOBALS[‘ecs’]))
{
$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . " WHERE session_id = ‘$this->session_id’ ");
}
[/code]
替换为
[code lang=”php”]
/* ECSHOP 自定义执行部分(不清空会员的购物车) */

if (!empty($GLOBALS[‘ecs’]))
{
$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . " WHERE session_id = ‘$this->session_id’ AND user_id = 0 ");
}
[/code]

2. \includes\lib_main.php
搜索function update_user_info()

27行左右,在改函数内部末尾添加如下代码
[code lang=”php”]
/* 更新用户购物车session_id 开发中心 退出不清空购物车*/

$sql = "UPDATE " . $GLOBALS[‘ecs’]->table(‘cart’) . " SET".
" session_id = ‘" .SESS_ID . "’".
" WHERE user_id = ‘" .$_SESSION[‘user_id’] . "’";
$GLOBALS[‘db’]->query($sql);
[/code]
3.去掉登陆后台删除购物车:

找admin/privilege.php

找到 724行左右:

在 clear_cart 方法内加入:
[code lang=”php”]
/** 清除游客购物车信息*/
$sql ="delete from " . $GLOBALS[‘ecs’]->table(‘cart’) ." where user_id = 0";
$GLOBALS[‘db’]->query($sql);
return ;

[/code]

我的方法目前测试可用,看后面有没需要补充
———————

网上的参考方法:

1.首先限制入口:加入购物车必须要已经登陆,找到flow.php在

if ($_REQUEST[‘step’] == ‘add_to_cart’)
{
include_once(‘includes/cls_json.php’);
后面加入:

[code lang=”php”]
if ( empty($_SESSION[‘user_name’]))
{
$json = new JSON;
$result[‘error’] = "888";
$result[‘message’] = "请先登录";
die($json->encode($result));
}

[/code]

2.includes/cls_session.php找到destroy_session()函数,把其中

[code lang=”php”]
if (!empty($GLOBALS[‘ecs’]))
{
$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . " WHERE session_id = ‘$this->session_id’ ");
}
[/code]
替换为
[code lang=”php”]
/* ECSHOP 自定义执行部分(不清空会员的购物车) */

if (!empty($GLOBALS[‘ecs’]))
{
$this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . " WHERE session_id = ‘$this->session_id’ AND user_id = 0 ");
}
[/code]

3、换IP时不影响购物车

includes/cls_session.php把

[code lang=”php”]
$this->_ip = real_ip();
[/code]
替换为
[code lang=”php”]
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);
}
[/code]

4.删除后台清除购物车的方法 admin/privilege.php 文件内