将cookie值作为数组是否合法?

时间:2013-06-13 14:10:45

标签: php http cookies

我一直认为cookie可能只包含字符串,但PHP处理cookie的方式,也可以在cookie中存储数组(我不是在讨论序列化数组,而是本机数组)。您需要做的就是:

setcookie('a[1]', 'a');
setcookie('a[2]', 'b');
var_dump($_COOKIE);

以上将产生以下内容(记得执行两次):

array(1) {
  ["a"]=>
  array(2) {
    [1]=>
    string(1) "a"
    [2]=>
    string(1) "b"
  }
}

这里发生了什么?很明显,我们设法将一个数组存储到一个cookie,该cookie应该只包含字符串。这是一个错误吗?

2 个答案:

答案 0 :(得分:2)

这当然不是一个错误。事实上,它在PHP Documentation

中有记载
  

您还可以在Cookie名称中使用数组表示法设置数组Cookie。这样可以设置与数组元素一样多的cookie,但是当脚本收到cookie时,这些值都将放在一个带有cookie名称的数组中:

答案 1 :(得分:1)

Cookie值只能是字符串。

当PHP将cookie解析为$_COOKIE时,某些命名约定(即名称以[][something]结尾的cookie)将使它们将它们表示为数组。