【发布时间】:2016-03-19 00:21:30
【问题描述】:
我试图在 cookie 中插入多个值,但我只能存储一个值。听到是我的代码。
<?php
session_start();
$rand= "SED".rand(10000,99999);
?>
<!doctype>
<html lang="en">
<body>
<form action="result4.php" method="post">
<input type="hidden" name="productid" value="<?=$rand?>">
<button type="submit">submit</button>
</form>
</body>
</html>
和我的 result4.php
<?php
$cookie_name = "lastview";
$cookie_value = array($_POST['productid']);
$init = json_encode($cookie_value);
setcookie($cookie_name, $init, time() + (86400 * 30));
?>
<?php
echo count($_COOKIE["lastview"]);
echo '<pre>';
print_r($_COOKIE["lastview"]);
echo '</pre>';
?>
输出
1
["SED73204"]
我正在努力解决这个问题
5
["SED73204"]
["SED73507"]
["SED23207"]
["SED73286"]
["SED23294"]
【问题讨论】:
-
期望的行为是什么?实际输出是多少?
-
在覆盖之前您没有读取 cookie 的内容。读取它,返回一个数组,添加一个值,再写回去。
-
怎么读能不能举个例子
-
我知道它覆盖了现有的 cookie 值。但是如何获取多个值
-
如果你要这样做,那么有一些限制/陷阱。 1) COOKIES 的大小有限(官方为 4KB) 2) 它们可以在客户端上被弄乱。因此,1) 将数组存储在具有唯一 ID 的会话或数据库中。 2)发送cookie中的唯一ID。我倾向于使用唯一 ID 的哈希值,但这不是必需的。