【问题标题】:putting array in cookie [duplicate]将数组放入cookie [重复]
【发布时间】:2013-09-19 10:59:54
【问题描述】:

我正在尝试在我的网站中添加“最近查看的产品”功能。所以我想在 cookie 中添加最近观看的产品。当用户进入产品详情页面时设置cookie。所以cookie设置代码在详细页面。 我在尝试什么

setcookie('recentviews', $productid, time()+3600,'/')

我需要的是

recentviews1 =>1
recentviews2 =>5
recentviews3 =>3

recentviews (
[0] => 1,
[1] => 5,
[2] => 3
)

我尝试了很多解决方案,比如在循环中设置 cookie,但是如何知道已经设置了多少视图,所以我可以增加 'recentviews' 并设置新的 cookie。

【问题讨论】:

  • 也许你可以在保存之前对数组进行json_encode?​​span>
  • 我尝试了序列化。但是如何找到我已经有多少 vie?
  • 如果您只想为服务器端使用会话保留数据。否则序列化,json 将是最合适的格式,恕我直言。
  • json_encode()serialize()
  • 不,不在服务器端。在客户端。 json怎么办?

标签: php


【解决方案1】:

我可能会这样做(假设 cookie 内容包含 safe 数据):

# basic cookie structure:
$recent_views = array(
    # 'product_id' => 'value',
    32324 => 2,
    32455 => 23,
);


# to add a value in a request handler:
$recent_views = json_decode($_COOKIE['recentviews']);
$recent_views[ 32342 ] = 32;
setcookie('recentviews', json_encode( $recent_views ), $expi_time );

为简洁起见,省略了错误检查。

Json 确实有一个优势,您可以在浏览器中轻松解码 javascript 中的 cookie,甚至在那里进行更改..(不是我会做的,但仍有可能)。

干杯-

【讨论】:

    【解决方案2】:

    你可以按照下面的例子

    $info[7][5]=1;
    $info[8][5]=1;
    

    序列化数据:

    setcookie('cookie', serialize($info), time()+3600);
    

    然后反序列化数据:

    $data = unserialize($_COOKIE['cookie']);
    

    data 之后,$info 和 $data 将具有相同的内容。

    【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多