当前位置:首页 > CMS教程 > ecshop > 列表

ecshop购物车退出不清空几种方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-12-06 15:31:52 浏览: 评论:0 

今天想做几个实例就是当会员退出登录时他的购物车里面的数据不会清空,下次登录时查看购物车还有自己以前看到的数据了,这个和淘宝有一点像了.

效果:只要IP不变,购物车中的商品就不会消失.

方法一,修改init.php,代码如下:

  1. //找到 
  2. define('SESS_ID'$sess->get_session_id()); 
  3. //修改为 
  4. define('SESS_ID', md5(real_ip()));  

有人提到 相同IP 购买混淆的问题,确实会存在这样的问题,可以参考这个方法,那就是只保留登陆过用户的数据.

方法二,代码修改为:

  1. if($_SESSION['user_id']>0){ 
  2. define('SESS_ID', md5($_SESSION['user_id'])); 
  3. }else
  4. define('SESS_ID'$sess->get_session_id()); 

经过小小的思考,终于完美解决了.

方法三,找到代码:

  1. if (!defined('INIT_NO_USERS')) 
  2.     /* 初始化session */ 
  3.     include(ROOT_PATH . 'includes/cls_session.php'); 
  4.     $sess = new cls_session($db$ecs->table('sessions'), $ecs->table('sessions_data')); 
  5.     define('SESS_ID'$sess->get_session_id()); 

将此代码剪切到 init.php文件末尾并修改为如下代码:

  1. if (!defined('INIT_NO_USERS')) 
  2.     /* 初始化session */ 
  3.     include(ROOT_PATH . 'includes/cls_session.php'); 
  4.     $sess = new cls_session($db$ecs->table('sessions'), $ecs->table('sessions_data')); 
  5.     //define('SESS_ID', $sess->get_session_id()); 
  6.     if($_COOKIE['randnumber']==""){ 
  7.        setcookie("randnumber",rand(0,1000),time()+86400); 
  8.     }  //开源软件:phpfensi.com 
  9.     define('SESS_ID', md5($_COOKIE['randnumber'].real_ip())); 

方法一 只判断IP,只要IP不相同就可以保存,而且可以跨浏览器,缺点可能出现冲突.

方法二 不会冲突,但是只有登录会员的才可以保留.

方法三 不会冲突,但是需要浏览器支持cookie,不可以垮浏览器.

Tags: ecshop购物车 ecshop清空

分享到: