打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ecshop购物车永久保留(原创)修复一个BUG

一、匿名用户的购物车和登录会员购物车

 

ecshop的购物车机制,当用户打开网站时会在session表产生一条seesion,登陆时更新这条seession。此时如果用户将商品添加至购物车,就会在cart表中添加以session_id为Id的商品数据。而用户退出登录时系统会调用destroy_session()函数,清购物车。函数部分如下:(cls_session.php文件中)

 function destroy_session()

     .此处省略部分代码

            

          $this->db->query('DELETEFROM ' . $GLOBALS['ecs']->table('cart') . " WHEREsession_id ='$this->session_id'“ );

     此处省略部分代码

所以此时退出购物车就被清空了,下面是本人的解决方法:

说说思路:

    Author:梦中的期待*/

    Author:梦中的期待*/

    Author:梦中的期待*/

Author:梦中的期待*/

具体实现代码:

1.cls_session.php

 function destroy_session()

     .此处省略部分代码

       Author:梦中的期待*/

          $this->db->query('DELETEFROM ' . $GLOBALS['ecs']->table('cart') . " WHEREsession_id = '$this->session_id' AND user_id=''");

    此处省略部分代码}

2.lib.main.php

function update_user_info()

{  些处省略函数原来代码,直接跳到函数最后,加上如下代码:

Author:梦中的期待*/

     $sql ="update ".$GLOBALS['ecs']->table('cart')." setuser_id =".$_SESSION['user_id']." where session_id ='".SESS_ID."'";

    $GLOBALS['db'] -> query($sql);

    Author:梦中的期待*/

     $sql1 ="update ".$GLOBALS['ecs']->table('cart')." setsession_id ='".SESS_ID."' where user_id ='".$_SESSION['user_id']."'";

    $GLOBALS['db'] -> query($sql1);

    Author:梦中的期待*/

    $sql2="select distinct(c.goods_id)from".$GLOBALS['ecs']->table('cart')."as c leftjoin"

    .$GLOBALS['ecs']->table('goods')."as g onc.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="deletefrom".$GLOBALS['ecs']->table('cart')."where goods_id= '".$v['goods_id']."'";

    $GLOBALS['db'] -> query($sql);

  }}}

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////分隔线

补充:发现一个BUG

在privilege.php中发现一个functionclear_cart()用于清理cart中无效的数据的,难怪购物车的商品,session一过期就没有了!~

既然我们不需要定期清cart中的无效数据,这个function其实就没有用了,但我们改一下,可以用来清理己下架的商品,这样上面.lib.main.php文件中的清理下架商品的部分就可以删除了!~

修改后的function如下:

 

function clear_cart()
{
   
   

    //删除cart中无效的数据
    //$sql ="DELETE FROM " . $GLOBALS['ecs']->table('cart').
   //  " WHERE session_id NOT " .db_create_in($valid_sess);
    //$GLOBALS['db']->query($sql);
   
 
    $sql2="select distinct(c.goods_id)from".$GLOBALS['ecs']->table('cart')."as c leftjoin"
    .$GLOBALS['ecs']->table('goods')."as g onc.goods_id=g.goods_id where g.is_on_sale =0 AND c.extension_code=''";
     //.$GLOBALS['ecs']->table('goods')."as g onc.goods_id=g.goods_id  ";
    $data = $GLOBALS['db'] -> getAll($sql2);
     print_r($data);
    if($data){
       foreach ($data as $k=>$v){
          $sql="deletefrom".$GLOBALS['ecs']->table('cart')."where goods_id= '".$v['goods_id']."'";   
          $GLOBALS['db'] ->query($sql);   
         
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一位剩女的直白:“37岁还没嫁出去,剩女真的没市场了吗?”
买精子生出孩子后,她靠起诉捐精者骗到了对方的财产
让老去成为生命礼物,任何时候,都要活出自己喜欢的样子
退休后,不玩手机时,我默默培养了这5个爱好,过有趣的余生
小升初成绩好的孩子,都有这个特征
令人彻悟人生的古语处事格言160则,句句富有深意,值得一读再读
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服