您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程

ecshop购物车商品根据cookie长久保存商品插件

沛菡2023-12-31Ecshop商城教程已有人查阅

导读默认的ecshop购物车存在一个很大的弊端:1、当我们不登录将商品加入购物车后,等登录后再看,发现购买车没有了先前加入的商品。

默认的ecshop购物车存在一个很大的弊端:
1、当我们不登录将商品加入购物车后,等登录后再看,发现购买车没有了先前加入的商品。
2、当我们在公司登录后将商品加入购物车,回到家后支付,购物车中的商品没有了。
为解决此问题,最终决定采用根据cookie来保存商品,而摒弃了根据IP来保存商品的方法。
原因是IP很多时候并不是固定的,当我们下班回到家,或者去咖啡厅等转换了上网地点时,这个时候IP也跟着变了,
如果是cookie,只要您的笔记本没变,信息就会依然保存着,显而易见,根据cookie保存商品信息远胜过根据IP。
功能概述:
1、未登录情况下,根据cookie ,可以使购物车中的商品一直保存7天。
2、登录后,之前未登录时添加到购物车中的商品仍旧保存在购物车中,避免再次添加。
3、用户退出后,购物车依然保存7天。
4、用户再次登录时,购物车自动显示之前所添加的商品(包括未登录时添加到购物车的商品),并按日期排序。
5、购物车中的商品一般默认保存7天,这样避免了用户是大,购物车信息过量导致网站 能下降。
1,includes\cls_session.php
换IP时不影响购物车
将用户的IP存入Cookie,或者在生成SESSION时,不取IP。这步修改对动态IP用户无法使用购物车也同时解决。这里IP存入Cookie的有 效期是10天,也就是10后购物车依然被清空了。如果想保留更久或更短,可以把864000改为其它数字。一般来说购物车数据留10天已足够了,10天了 还未下单,基本上就不会下单了。而10后购物车清空,不会造成数据库压力。
找到
$this->_ip = real_ip();
注释,换成下面代码
//购物车 by neo
if(isset($_COOKIE['real_ipd']) && !empty($_COOKIE['real_ipd']))
{
$this->_ip = $_COOKIE['real_ipd'];
}
else
{
$this->_ip = real_ip();
setcookie("real_ipd", $this->_ip, time()+864000, $this->session_cookie_path);
}
继续找
setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id)
把 0 改成 time()+86400*10
setcookie($this->session_name, $this->session_id . $this->gen_session_key($this->session_id), time()+86400*30, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);//购物车 by neo
设置session_id的cookie保存10天,购物车和session都是根据这个值来获取的,如果丢失会重新生成一个,购物车的东西自然就找不到了
继续找
function destroy_session()
把里面的
setcookie($this->session_name, $this->session_id, 1, $this->session_cookie_path, $this->session_cookie_domain, $this->session_cookie_secure);
if (!empty($GLOBALS['ecs']))
{
$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '$this->session_id'");
}
都注释掉。这是退出登录的时候,删除cookie,删除购物车的
2,admin/privilege.php
" WHERE session_id NOT " . db_create_in($valid_sess);
改成
" WHERE add_time < ".($time-86400*30)." AND session_id NOT " . db_create_in($valid_sess);
管理员登陆时不清空购物车。
3,includes\lib_main.php
找到
function update_user_info()
在函数最里面加入
//购物车 by neo
$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);
$re = $GLOBALS['db'] -> getAll("select *,sum(goods_number) as goods_number from ".$GLOBALS['ecs']->table('cart')." where user_id = '{$_SESSION['user_id']}' and session_id = '".SESS_ID."' group by goods_id");
if($re)
{
foreach ($re as $k => $v)
{
$sql = "update ".$GLOBALS['ecs']->table('cart'). " set goods_number = ".$v['goods_number']." where rec_id = ".$v['rec_id'];
$GLOBALS['db'] -> query($sql);
$sql = "delete from ".$GLOBALS['ecs']->table('cart')." where rec_id <> {$v['rec_id']} and user_id = '{$_SESSION['user_id']}' and session_id = '".SESS_ID."' and goods_id = ".$v['goods_id'];
$GLOBALS['db'] -> query($sql);
}
}
会员到别处登录,获取之前的购物车商品出来。

本文标签:

很赞哦! ()

相关源码

  • 帝国CMS7.5小说推荐公众号导航带wap手机站+带采集工具本模板为小说导航类网站设计开发,基于帝国CMS7.5内核构建,针对小说阅读领域的分类聚合需求进行深度优化。通过智能分类系统和用户行为分析,实现小说资源的精准推荐与导航功能。查看源码
  • 响应式粉色美容整形化妆品pbootcms网站模板开源源码该网站模板为美容整形、化妆品企业设计,采用响应式布局确保在手机、平板及PC端自动适配显示效果。基于PbootCMS内核开发,支持一键替换图文内容快速转换至其他行业应用。查看源码
  • (自适应)英文绿色精密模具零件加工五金零件pbootcms外贸网站模板本模板基于PbootCMS开发,为五金零件、精密模具加工等英文外贸企业设计。采用响应式布局,适配各类移动设备,是五金零件企业开展国际贸易的专业展示平台。查看源码
  • (自适应)HTML5响应式双语绿色物流运输快递货运pbootcms源码本款基于PbootCMS开发的网站模板为物流运输、快递货运行业设计,采用HTML5技术构建,支持简繁字体切换。模板设计充分考虑了货运物流行业的特点,可专业展示运输服务、物流网络和业务优势等内容。查看源码
  • (自适应)WordPress主题SEO自媒体博客资讯模板RabbitV2.0Rabbit v2.0主题专注于网站搜索引擎优化需求,为博客、自媒体及资讯类网站提供专业的SEO技术解决方案。该主题从架构设计到功能实现均围绕搜索引擎优化理念展开。查看源码
  • (PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐