A-A+

解决ecshop关闭浏览器购物车商品清除的方法

2015年07月10日 PHP开源系统 评论 1 条 阅读 223 views 次

今天 ecshop 出现了一个奇怪的问题,就是当关闭浏览器且再次重启浏览器的时候,发现购物车里面已经购物好的商品都不见了,还要重新再次将商品放进购物车,在反复测试了几次之后,确实存在这个 bug,夏日博客从网上找到一个方法,尝试了一下,测试OK。

打开 \includes\init.php 文件,找到如下的代码,在 150-158行。

if(!defined('INIT_NO_USERS'))
{
  /*初始化session*/
  include(ROOT_PATH . 'includes/cls_session.php');
  $sess = new cls_session($db,$secs->table('sessions'),$ecs->table('sessions_data'));
  define('sess_ID',$sess->get_session_id());
}

修改成如下代码:

if (!defined('INIT_NO_USERS'))
{
include(ROOT_PATH . 'includes/cls_session.php');
$sess = new cls_session($db, $ecs->table('sessions'), $ecs->table('sessions_data'));
//define('SESS_ID', $sess->get_session_id());
}

继续在本页面最下面代码 ?> 符号前面添加如下代码:

if($_COOKIE['randnumber']==""){
setcookie("randnumber",rand(0,1000),time()+86400);
}
define('SESS_ID', md5($_COOKIE['randnumber'].real_ip()));

解决的原理,实际上就是将保存购物车商品的方式改变了一下,在 ecshop 中,是以 session 的形式保存购物车商品的,而 session 在浏览器关闭之后也随之消失了,所以当关闭浏览器,再打开的时候商品也就不见了,我们改成 cookie 来保存商品则不会出现这种情况。

标签:

1 条留言  访客:1 条  博主:0 条

  1. 大路

    试验了,不好使。
    Parse error: syntax error, unexpected $end in /data/home/qxu1002100084/htdocs/includes/init.php on line 304

    是上面的提示

给我留言