在cookie名称中使用括号 - 为什么PHP将其转换为数组?

时间:2010-10-19 14:28:38

标签: php cookies curl

我正在尝试在Cookie名称中使用括号。

应该看起来像这样(这是浏览器想要的!):

Name: name[123456].newName
Content: 20

以下是我的例子:

$cookie = "name[123456].newName=20"

但是,当我分析浏览器看到的内容时,我明白了:

cookie['name'] = Array

我想要:

cookie['name[123456].newName'] = 20

我的问题是:我应该如何以浏览器理解的方式编写cookie名称?

提前谢谢。

1 个答案:

答案 0 :(得分:5)

实际上,你所要做的就是:

<?php

setcookie('name[123456].newName', 20);

?>

这将生成以下标题:

Set-Cookie: name[123456].newName=20

...浏览器(好吧,至少是Firefox)似乎处理得很好。

当您想要读取值时,问题就开始了。 PHP有一个不错的功能:每当它找到一个带有方括号的输入参数(get,post,cookie ......)时,它就会从中构建一个数组。所以print_r($_COOKIE)显示了这个:

Array
(
    [name] => Array
        (
            [123456] => 20
        )

)

我不知道有任何方法可以禁用此功能,因此您可能需要使用字符串函数并解析原始cookie的内容,可以在$_SERVER['HTTP_COOKIE']找到:

name[123456].newName=20