ECSHOP购物车退出不清空

本文介绍了一种改进的电子商务网站购物车管理和用户信息更新的方法。通过调整PHP代码,实现了仅清除未登录用户的购物车记录,更新已登录用户的访问计数、最后登录时间和IP地址,并确保了用户登录前后购物车内容的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.includes\cls_session.php,将
        if (!empty($GLOBALS['ecs']))
        {
            $this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id'");
        }
改为
		if (!empty($GLOBALS['ecs']))
		{
			$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id' AND `user_id`=0");
		}
2. includes\lib_main.php中,function update_user_info(){} 在这个函数内最下面加入
    /* 更新登录时间,登录次数及登录ip */
	$sql = "UPDATE " .$GLOBALS['ecs']->table('users'). " SET".
		   " visit_count = visit_count + 1, ".
		   " last_ip = '" .real_ip(). "',".
		   " last_login = '" .gmtime(). "'".
		   " WHERE user_id = '" . $_SESSION['user_id'] . "'";
	$GLOBALS['db']->query($sql);
	$sql = "update ".$GLOBALS['ecs']->table('cart')." set user_id =".$_SESSION['user_id']." where session_id = '".SESS_ID."'";
	$GLOBALS['db'] -> query($sql);
	$sql1 = "update ".$GLOBALS['ecs']->table('cart')." set session_id ='".SESS_ID."' where user_id = '".$_SESSION['user_id']."'";
	$GLOBALS['db'] -> query($sql1);
	$sql2="select distinct(c.goods_id) from".$GLOBALS['ecs']->table('cart')."as c left join".$GLOBALS['ecs']->table('goods')."as g on c.goods_id=g.goods_id where g.is_on_sale =0 AND c.user_id = '".$_SESSION['user_id']."'";
	$data = $GLOBALS['db'] -> getAll($sql2);

	if($data){
		foreach ($data as $k=>$v){
			$sql="delete from".$GLOBALS['ecs']->table('cart')."where goods_id = '".$v['goods_id']."'";
			$GLOBALS['db'] -> query($sql);
		}
	}
3. admin\privilege.php 找到下面代码注释掉
    $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') .
            " WHERE session_id NOT " . db_create_in($valid_sess);
    $GLOBALS['db']->query($sql);

完成

转载自:http://www.phptext.net/article_view.php?id=290

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值