博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用COOKIE保存历史浏览商品的一个简单思路
阅读量:6705 次
发布时间:2019-06-25

本文共 1787 字,大约阅读时间需要 5 分钟。

5){ //将数组最后一个单元弹出,直到它的长度小于等于5为止 array_pop($history); } //把这个数组用逗号连成一个字符串写入COOKIE,并设置其过期时间为30天 setcookie('SHOP[history]', implode(',', $history), $cur_time + 3600 * 24 * 30); }else{ //如果COOKIE里面为空,则把当前浏览的商品ID写入COOKIE ,这个只在第一次浏览该网站时发生 setcookie('SHOP[history]', $id, $cur_time + 3600 * 24 * 30); }//以上均为记录浏览的商品ID到COOKIE里,下面将讲到怎样用这样COOKIE里的数据

·//取得COOKIE里的数据 ,格式为1,2,3,4 这样,当然也有可以为0

··$history =isset ($_COOKIE['SHOP']['history'][$uid]) ? $_COOKIE['SHOP']['history'][$uid] : 0;
·//写SQL语句,用IN 来查询出这些ID的商品列表
··$sql_history = "SELECT * FROM `goods` WHERE `goods_id` in ({$history})";
·//执行SQL语句,返回数据列表
··$goods_history = $db->getAll($sql_history);
··if ($goods_history) {
····$tpl->assign ('goods_history',$goods_history);
···}

?>

这样的话,其实有个问题会出现,那就是如果这个浏览器一个人刚登陆完了后,退出登录。另一人再次登陆自己的账号,历史浏览记录会“混合”在一起,造成数据的不准确。

最简单的解决办法就是,在存入cookie的时候,带入用户的ID,这样每个用户的历史浏览数据都不一样,也不容易冲突。代码如下:

5){ //将数组最后一个单元弹出,直到它的长度小于等于5为止 array_pop($history); } //把这个数组用逗号连成一个字符串写入COOKIE,并设置其过期时间为30天 setcookie("SHOP[history][$uid]", implode(',', $history), $cur_time + 3600 * 24 * 30); }else{ //如果COOKIE里面为空,则把当前浏览的商品ID写入COOKIE ,这个只在第一次浏览该网站时发生 setcookie("SHOP[history][$uid]", $id, $cur_time + 3600 * 24 * 30); }//以上均为记录浏览的商品ID到COOKIE里,下面将讲到怎样用这样COOKIE里的数据 //取得COOKIE里的数据 ,格式为1,2,3,4 这样,当然也有可以为0 $history =isset ($_COOKIE['SHOP']['history'][$uid]) ? $_COOKIE['SHOP']['history'][$uid] : 0; //写SQL语句,用IN 来查询出这些ID的商品列表 $sql_history = "SELECT * FROM `goods` WHERE `goods_id` in ({$history})"; //执行SQL语句,返回数据列表 $goods_history = $db->getAll($sql_history); if ($goods_history) { $tpl->assign ('goods_history',$goods_history); }?>

 

转载于:https://www.cnblogs.com/phper12580/p/10535702.html

你可能感兴趣的文章
老虎机的制作
查看>>
Classloader和线程
查看>>
浅谈Attribute [C# | Attribute | DefaultValueAttribute]
查看>>
citus对join的支持
查看>>
【Cocos2d-X】iOS6 中 libcurl.a及iOS6中无法横屏的解决方法
查看>>
.NET开发常用知识点总结汇总
查看>>
源码配置bind主从时的注意事项
查看>>
英语每日听写练习 Day 6
查看>>
数组逆序重放(链表头插法练习)
查看>>
windows server 2008 安装实录
查看>>
安装卸载图形界面
查看>>
修改EXCHANGE默认的收发邮件大小是10M
查看>>
软raid的详细配置讲解 raid 0
查看>>
large-scale analysis of malware downloaders
查看>>
一道中级运维的shell面试题
查看>>
erlang: Programming Rules and Conventions。
查看>>
分布式应急响应
查看>>
iso定制封装
查看>>
精通MVC3摘译(8)-处理输出(2)
查看>>
字符串翻转之实现二
查看>>