修改一句代码 实现购物车退出不清空[转载+修改]
来源:互联网 发布:阿里云服务器租用流程 编辑:程序博客网 时间:2024/06/01 10:08
效果 只要IP 不变 购物车中的商品就不会消失
有人提到 相同IP 购买混淆的问题
确实会存在这样的问题
可以参考这个方法 那就是只保留登陆过用户的数据
方法二
代码修改为
暂时的解决方法是将这句话注释掉,测试可以了,不过这样的话购物车的信息会越来越庞大,也是有一定的缺陷的,所以还要在看看是不是要对购物车的清除函数clear_cart()进行修改优化。
方法三
找到代码
然后在文件尾添加代码
继续完善
方法四 慎用 该方法会导致购物车混乱。
有用户反映到 会员推出后购物车不会清空 其实个人觉得这个没有什么影响
不过既然有人需要 我还是提出一个解决方法
方法和上面一种类似 只不过多一个判断
也是在文件尾加上代码
并提供四种方案供大家选择使用!
方法一 只判断IP 只要IP 不相同 就可以保存 而且可以跨浏览器 缺点 可能出现冲突
方法二 不会冲突,但是只有登录会员的才可以保留
方法三 不会冲突,但是需要浏览器支持cookie,不可以垮浏览器。
方法四 会员根据userid记录购物车信息 登陆后显示用户上次购物车数据 退出自动清空 普通用户用cookie+ip 记录用户购物车数据 缺点 IP更换后 普通会员购物车数据将无法保留 不过可以尝试 只根据cookie来判断
修改 方法四中的
define('SESS_ID', md5($_COOKIE['randnumber'].real_ip()));
为
define('SESS_ID', md5($_COOKIE['randnumber'])); 这样只要不清空cookie 就一直保存着!
关于 PHP Notice: Undefined index错误的说明
首先,这个不是错误,是warning。
方法二 可以修改为
当然其他判断方式 大家可以举一反三
方法一
修改 init.php找到define('SESS_ID', $sess->get_session_id());修改为define('SESS_ID', md5(real_ip()));
有人提到 相同IP 购买混淆的问题
确实会存在这样的问题
可以参考这个方法 那就是只保留登陆过用户的数据
方法二
代码修改为
if($_SESSION['user_id']>0){define('SESS_ID', md5($_SESSION['user_id']));}else{define('SESS_ID', $sess->get_session_id());}
这个时候如果是管理员登陆后台,那么所有用户的购物车都会清空。查找管理员登陆时的代码,发现验证管理员登陆成功的时候,系统调用函数将购物车的一些信息清除了。清除的代码位于根目录下的privilege.php文件:
// 清除购物车中过期的数据clear_cart();
暂时的解决方法是将这句话注释掉,测试可以了,不过这样的话购物车的信息会越来越庞大,也是有一定的缺陷的,所以还要在看看是不是要对购物车的清除函数clear_cart()进行修改优化。
方法三
找到代码
if (!defined('INIT_NO_USERS')){ /* 初始化session */ 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());}
修改为 也就是把 define('SESS_ID', $sess->get_session_id());注释掉
if (!defined('INIT_NO_USERS')){ /* 初始化session */ 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()));
继续完善
方法四 慎用 该方法会导致购物车混乱。
有用户反映到 会员推出后购物车不会清空 其实个人觉得这个没有什么影响
不过既然有人需要 我还是提出一个解决方法
方法和上面一种类似 只不过多一个判断
也是在文件尾加上代码
if($_SESSION['user_id']>0){define('SESS_ID', md5($_SESSION['user_id']));}else{if($_COOKIE['randnumber']==""){ setcookie("randnumber",rand(0,1000),time()+86400); }define('SESS_ID', md5($_COOKIE['randnumber'].real_ip()));}
并提供四种方案供大家选择使用!
方法一 只判断IP 只要IP 不相同 就可以保存 而且可以跨浏览器 缺点 可能出现冲突
方法二 不会冲突,但是只有登录会员的才可以保留
方法三 不会冲突,但是需要浏览器支持cookie,不可以垮浏览器。
方法四 会员根据userid记录购物车信息 登陆后显示用户上次购物车数据 退出自动清空 普通用户用cookie+ip 记录用户购物车数据 缺点 IP更换后 普通会员购物车数据将无法保留 不过可以尝试 只根据cookie来判断
修改 方法四中的
define('SESS_ID', md5($_COOKIE['randnumber'].real_ip()));
为
define('SESS_ID', md5($_COOKIE['randnumber'])); 这样只要不清空cookie 就一直保存着!
关于 PHP Notice: Undefined index错误的说明
首先,这个不是错误,是warning。
方法二 可以修改为
if(@$_SESSION['user_id']>0){ //@加入就可以不提示警告错误define('SESS_ID', md5($_SESSION['user_id']));}else{define('SESS_ID', $sess->get_session_id());}
- 修改一句代码 实现购物车退出不清空[转载+修改]
- UINavigationController的标题修改,一句代码搞定返回
- ecshop二次开发之 修改ecshop购物车退出后保留购物车购买的商品
- theme508 购物车修改
- Ajax修改购物车
- 修改购物车产品数量
- 购物车:修改版
- 购物车修改
- php购物车实现代码一例
- 几句代码修改java默认皮肤
- J2ee 购物车修改 删除操作如何实现
- 修改购物车商品数量
- 购物车修改排序删除
- UIPageControl修改原点大小,无需重写方法,一句代码搞定
- 三种方法实现ecshop购物车退出不清空
- HDFS修改代码(一)
- ECSHOP购物车退出不清空
- 购物车实现代码
- 使用盗版软件开发工具面临的若干法律问题
- 一切都忘了,那就重新开始
- Bind variables - The key to application performance
- log4j配置
- log4j的WriterAppender的应用
- 修改一句代码 实现购物车退出不清空[转载+修改]
- Android游戏开发之音效SoundPool的使用
- poj2488坑爹的大水题
- android的adb详解(多设备时adb调用)
- android 全部命令
- c 处理同名函数
- XBRL简介 - 2 - 元素 (Element)
- 算法分析与设计课程总结
- 5. A boaster and a liar are cousins-german. 吹牛和说慌本是同宗