Cookie多个值

时间:2012-11-12 06:03:21

标签: php cookies multiple-value

在php手册的“cookies”部分中,它表示只需在cookie名称中添加“[]”即可向单个cookie添加多个值。

首先,我对此的理解是做以下事情:

<?php
setcookie("[user1]", "bill");
setcookie("[user2]", "tom");

print_r($_COOKIE);
?>

和输出是:'Array()' 在看到一个空数组之后,我知道有些事情是不对的,但是,我已经按照手册中的说法进行了操作。所以我在浏览器中进入开发者模式,以查看浏览器和服务器的所有标题信息。

浏览器和服务器都有以下内容: [USER1] =账单 [USER2] =汤姆

$ _COOKIE关联数组是空的,即'Array()'

所以我研究并在PHP手册下找到了几个值存储在单个cookie中的方式,即“来自外部源的变量”。

这里给出了如何正确完成此操作的详细示例。而不是上述内容,它完成如下:

<?php
setcookie("Cookie[user1]", "bill");
setcookie("Cookie[user2]", "tom");

print_r($_COOKIE);
?>

上述脚本的输出为:'Array([Cookie] =&gt; Array([user1] =&gt; bill [user2] =&gt; tom))'

我的问题是为什么在第一个例子中注册了cookie但是没有打印出来但是在第二个(正确的)示例中它们会在$ _COOKIE变量中打印出来?

1 个答案:

答案 0 :(得分:3)

你做得有些不正确

 setcookie("Cookie[user1]", "bill");
 setcookie("Cookie[user2]", "tom");

这将存储值的账单;和'tom'作为一个数组,在一个名为'Cookie'的cookie中,可以通过$ _COOKIE supoer global访问。 你需要像这样访问它:

print_r($_COOKIE['Cookie']); // Cookie is the name you used above

另一个例子:

setcookie("bob[user1]", "bill"); // cookie name is bob
print_r($_COOKIE['bob']); // Notice the cookie name is the key here

如果要将数组存储在单个cookie中,还可以序列化内容。这会将数组转换为要存储在cookie中的字符串,然后您可以在需要数据时将其转换回来。

$myArray = array(1,2,3,4);
setCookie('my_cookie', serialize($myArray)); // Store the array as a string
$myArray = unserialize($_COOKIE['my_cookie]); // get our array back from the cookie