是否可以直接使用“header()”调用发送cookie标头?

时间:2011-03-31 12:00:22

标签: php cookies header http-headers

使用header()来电直接发送Cookie标头是否可以?

我正在修补PHP中的http cookie机制,并希望(至少在最初阶段)尝试" raw"事情:))

Brad Christie's"php-how-to-stringify-array-and-store-in-cookie"答案是假定的,但该主题是否有某种官方来源(或者至少是一个众所周知的做法)?

提前感谢您澄清这个话题。

[编辑:重要通知]

我发现一个有趣的事情是调用header('Set-Cookie: ...');有效地防止以前提供setcookie('...');的任何cookie被发送,至少在我的机器上发送(PHP 5.3.5,Apache 2.2.17,WinXP) SP2)。无论这是一个功能/错误(?)还是PHP语义/规则违规的后果,我都不知道。

分析PHP .c来源可能会给出答案(一个人应该放心地研究head.cheader()setcookie()等)和mod_php5.c(Apache模块)文件)。

4 个答案:

答案 0 :(得分:4)

考虑到Cookie只是HTTP标头,您当然可以使用 header() 功能发送它们。

但这是重新发明轮子(你必须自己处理所有可能性),因为PHP提供了setcookie()功能。

但是,如果您想了解Cookie的工作原理,为什么不呢?
这可能很有趣; - )

答案 1 :(得分:2)

PHP无论如何都不会关心。设置cookie只意味着发送标头。 PHP的网站没有任何其他内容(除非您正在谈论会话,但显然您不是)。你可以发送你想要的任何原始标题,PHP不会关心。如果您发送正确的标头,并且客户端在下一个请求中返回cookie,PHP将正确解析为$_COOKIE数组。这就是它的全部内容。

答案 2 :(得分:1)

绝对可以。使用原始标头发送的正确Cookie与通过set_cookie()发送的Cookie之间没有区别。

答案 3 :(得分:0)

不是

请参阅问题的“编辑”部分。