我试图从变量中设置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
有人可以解释为什么会这样吗?我只是试图认为可能会发生这种情况并导致很多混乱,尽管你应该检查代码中的所有错误。
答案 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作为第一个。