0

我正在尝试为网站创建最近查看的功能。这个想法是您在右侧导航中有一个框,显示您最近查看的 3 个产品。您不需要登录它,如果用户清除 cookie 也没问题,它只是重新开始。

根据我的研究,最好的方法是通过 cookie 数组(而不是设置 5 个 cookie 或继续添加 cookie 或在 mysql 中执行某些操作)。

我有两个问题:

  1. 首先,数组不断添加值,我希望它限制为 3 个值,然后从那里删除最旧的值,然后添加最新的值。因此,如果您按以下顺序访问了 7 个产品页面 ID:100,200,300,400,500,600,150,则 cookie 应存储值 (500,600,150)。第一个是 3 个中最旧的,最后一个是最新的。
  2. 其次,我不清楚如何将数组提取成可用的东西。该数组是我想我需要查询数据库的 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 查找吗?

与往常一样,提前致谢。

4

1 回答 1

0

这是我最终弄清楚 myssef 的答案:

// 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();}

    // grab the values from the original array to use as needed
    $recent3 = $cookie[0];
    $recent2 = $cookie[1];
    $recent1 = $cookie[2];
于 2013-02-03T21:51:46.530 回答