如何解码HTTP Cookie?

时间:2015-04-10 23:08:58

标签: http

如果我将此标题发送到服务器:

Cookie: spaces=foo+bar%20baz; repeat=foo; repeat=bar

如何解码?


PHP将其解码为

array (
    'spaces' => 'foo bar baz',
    'repeat' => 'foo',
)

但我认为应该是

array(
    'spaces' => 'foo bar baz',
    'repeat' => array('foo','bar'),
)

哪个是对的?

1 个答案:

答案 0 :(得分:0)

当参数名称出现多次时,PHP具有覆盖任何外部参数(GET / POST / COOKIE)的已知习惯/特性。

例如,对于?spaces=foo+bar%20baz&repeat=foo&repeat=bar之类的查询字符串,您会遇到同样的问题 - 在$_GET['repeat']中,只有值bar会“生存”。 (在您的Cookie示例中应该是相同的,它应该是'repeat' => 'bar',而不是'repeat' => 'foo'。)

为避免这种情况,必须使用参数名称末尾的方括号。尝试

Cookie: spaces=foo+bar%20baz; repeat[]=foo; repeat[]=bar

- 这应该会在$_COOKIE中为您提供所需的数组结构。