我正在尝试为网站创建最近查看的功能。这个想法是您在右侧导航中有一个框,显示您最近查看的 3 个产品。您不需要登录它,如果用户清除 cookie 也没问题,它只是重新开始。
根据我的研究,最好的方法是通过 cookie 数组(而不是设置 5 个 cookie 或继续添加 cookie 或在 mysql 中执行某些操作)。
我有两个问题:
- 首先,数组不断添加值,我希望它限制为 3 个值,然后从那里删除最旧的值,然后添加最新的值。因此,如果您按以下顺序访问了 7 个产品页面 ID:100,200,300,400,500,600,150,则 cookie 应存储值 (500,600,150)。第一个是 3 个中最旧的,最后一个是最新的。
- 其次,我不清楚如何将数组提取成可用的东西。该数组是我想我需要查询数据库的 ID 号。
当我把它放在页面上时:
COOKIE: <?php echo $cookie; ?>
我明白了:
COOKIE: a:7:i:0;s:3:"100";i:1;s:3:"200";i:2;s:3:"300";i:3;s:3:"400";i:4;s:3:"500";i:5;s:3:"600";i:6;s:3:"150";}
这是我的代码:
//set product id
$product_id = [//some stuff here sets the product id]
// if the cookie exists, read it and unserialize it. If not, create a blank array
if(array_key_exists('recentviews', $_COOKIE)) {
$cookie = $_COOKIE['recentviews'];
$cookie = unserialize($cookie);
} else {
$cookie = array();
}
// add the value to the array and serialize
$cookie[] = $product_id;
$cookie = serialize($cookie);
// save the cookie
setcookie('recentviews', $cookie, time()+3600);
我如何首先让 cookie 保存 3 个值并删除最旧的值?将这些 ID 提取到我可以放入查询中的最佳方法是什么?....str_replace?
这带来了另一个问题,我应该将产品的 URL、锚文本和几个属性放入 cookie 中,而不是使用 php/mysql 查找吗?
与往常一样,提前致谢。