Php 直接用“发送cookie头”可以吗;标题();电话?
直接通过调用发送cookie头可以吗 我正在修改PHP中的http cookie机制,我想(至少在最初)尝试一下“原始”的东西:) 这个问题的答案假设是这样的,但这个话题是否有官方消息来源(或者至少是众所周知的做法) 提前感谢你澄清这个话题 [编辑:重要通知] 我发现一件有趣的事情是调用Php 直接用“发送cookie头”可以吗;标题();电话?,php,cookies,header,http-headers,Php,Cookies,Header,Http Headers,直接通过调用发送cookie头可以吗 我正在修改PHP中的http cookie机制,我想(至少在最初)尝试一下“原始”的东西:) 这个问题的答案假设是这样的,但这个话题是否有官方消息来源(或者至少是众所周知的做法) 提前感谢你澄清这个话题 [编辑:重要通知] 我发现一件有趣的事情是调用header('Set-Cookie:…')有效防止以前随setcookie(“…”)提供的任何cookie。这是一个特性/错误(?)还是PHP语义/规则冲突的结果,我不知道 分析PHP.c源代码可能会得到答案(
header('Set-Cookie:…')
有效防止以前随setcookie(“…”)提供的任何cookie至少在我的机器上(PHP5.3.5、Apache2.2.17、WinXP SP2)发送的代码>。这是一个特性/错误(?)还是PHP语义/规则冲突的结果,我不知道
分析PHP.c
源代码可能会得到答案(人们应该仔细研究head.c
(header()
,setcookie()
,等等)和mod_php5.c
(Apache模块)文件)。考虑到cookies只是HTTP头文件,当然可以使用header()发送它们
功能
但这是在重新发明轮子(你必须自己处理所有的可能性),因为PHP提供了这个功能
不过,如果你想了解cookies是如何工作的,为什么不呢?
这可能很有趣;-) 绝对没问题。使用原始标题发送的正确cookie与通过set\u cookie()发送的cookie没有区别PHP不会在意任何一种方式。设置cookie只意味着发送标题。PHP的站点中没有涉及任何其他内容(除非您谈论的是会话,但显然不是)。你可以发送任何你想要的原始标题,PHP不会在意。如果您发送正确的头,客户端在下一个请求中返回cookie,PHP将正确地将其解析到$\u cookie
数组中。这就是它的全部。它不是
请看问题的“编辑”部分。这可能违反了德国法律。@阿尔瓦罗·G·维卡里奥怎么会这样?太严格了?附带问题:终于有一个真正的cookie规范了吗?@Alvaro我想说RFC 2965是“规范”-@mlvljr说,默认情况下,调用此函数将替换以前任何同名的头。这可能是它使用setcookie()
覆盖任何以前设置的值的原因。您是否尝试过标题('Set-Cookie:…',false)代码>?那么,这种做法完全可以——不需要PHP进行额外的处理,等等?(我只记得发送响应头被认为是这样的,并以一种特殊(适当)的方式进行处理)考虑到存在setcookie()
,使用header()在实际应用程序中设置cookie看起来不是一个好主意;但是,作为一个学习练习,是的,重新发明轮子是完全可以的;-)它在什么地方有记录吗(是的,我几乎肯定没有,但无论如何)?或者我应该看看PHP源代码以获得(最终)信任?@mlv说头有两种特殊情况:Location:
和HTTP/
头。所有其他标题都只是按给定的格式输出,没有任何副作用。恐怕这种否定性的确认是你能找到的最好的似乎有比我们想象的更复杂的问题,我更新了我的问题…但也看到最近@Benjamin对这个问题的评论