解决ecshop关闭浏览器购物车商品清除的方法
今天 ecshop 出现了一个奇怪的问题,就是当关闭浏览器且再次重启浏览器的时候,发现购物车里面已经购物好的商品都不见了,还要重新再次将商品放进购物车,在反复测试了几次之后,确实存在这个 bug,小虎博客从网上找到一个方法,尝试了一下,测试OK。
打开 \includes\init.php 文件,找到如下的代码,在 150-158行。
[code lang="php"]
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());
}
[/code]
修改成如下代码:
[code lang="php"]
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());
}
[/code]
继续在本页面最下面代码 ?> 符号前面添加如下代码:
[code lang="php"]
if($_COOKIE['randnumber']==""){
setcookie("randnumber",rand(0,1000),time()+86400);
}
define('SESS_ID', md5($_COOKIE['randnumber'].real_ip()));
[/code]
解决的原理,实际上就是将保存购物车商品的方式改变了一下,在 ecshop 中,是以 session 的形式保存购物车商品的,而 session 在浏览器关闭之后也随之消失了,所以当关闭浏览器,再打开的时候商品也就不见了,我们改成 cookie 来保存商品则不会出现这种情况。