2

在“cookies”部分下的 php 手册中,它指出您可以通过简单地将 '[]' 添加到 cookie 名称来向单个 cookie 添加多个值。

起初我对此的理解是做到以下几点:

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

print_r($_COOKIE);
?>

输出是:'Array ()' 显然,在看到一个空数组后,我知道有些地方不对劲,但是,我遵循了手册中的说明。所以我在浏览器中进入开发者模式,查看浏览器和服务器的所有头信息。

浏览器和服务器都具有以下内容: [user1]=bill [user2]=tom

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

因此,我在 PHP 手册中研究并发现了多个值存储在“来自外部源的变量”部分下的单个 cookie 中的方式。

这里给出了一个如何正确完成的详细示例。代替上面的,它是按如下方式完成的:

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

print_r($_COOKIE);
?>

上述脚本的输出是:'Array ([Cookie] => Array ([user1] => bill [user2] => tom))'

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

4

1 回答 1

4

你做的有点不对

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

这将存储值'bill; 和 'tom' 作为一个数组,在一个名为 'Cookie' 的 cookie 中,通过 $_COOKIE 超级全局访问。你需要像这样访问它:

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
于 2012-11-13T16:24:40.260 回答