PHP中没有名字的Cookie?

时间:2015-04-24 10:22:47

标签: php cookies names

我试图从变量中设置cookie名称,并且我不小心删除了变量声明,这导致了一个有趣的发现。请考虑以下代码:

setcookie('', 'value', time()+10);  

我认为这段代码不起作用,因为我们需要声明cookie的名称,并且分别应该输出错误,而是设置cookie,其名称包含在值< / strong>,并且cookie的值等于空字符串''

var_dump($_COOKIE);  // array (size=1) 'value' => string '' (length=0)
setcookie('', 'value', time()+10);  
echo (int)isset($_COOKIE['value']);  // 1

有人可以解释为什么会这样吗?我只是试图认为可能会发生这种情况并导致很多混乱,尽管你应该检查代码中的所有错误。

2 个答案:

答案 0 :(得分:1)

Cookie的存储类似于GET参数。

例如:

setCookie('a', 'A');
setCookie('b', 'B');

将存储为:

a=A&b=B

我假设,如果密钥为空,则url_encode将显示:

setCookie('', 'A');
setCookie('b', 'B');

A&b=B

可以理解为:

A = "";
b = "B";

答案 1 :(得分:0)

猜猜: 查看source of setcookie用于构建Set-Cookie标题行的格式为Set-Cookie: %s=%s。所以,我不是C程序员,但是可能 C snprintf并不会替换第一个参数name(这将是一个空字符串)并开始用第二个附加参数value替换format-string作为第一个。