客户端禁用cookie时,谁能确认PHP的setcookie()函数的行为?根据文档:
“如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE。如果setcookie()成功运行,它将返回TRUE。这并不表示用户是否接受了cookie。”
我不确定“成功运行”的确切含义是什么,但这使我相信实现不关心客户端是否接受cookie,并且我们不必担心与PHP相关的错误/警告。实际上是否设置了cookie。是对的吗?
提前致谢
Cookies通过http标头发送。标头可以总是被发送。是否接受/忽略它们无关紧要-您可以发送所需的任何标头。
判断客户端是否接受Cookie的唯一方法是客户端是否根据其NEXT请求将Cookie发送回服务器。
唯一setcookie()
失败的方法是如果输出已经开始。这会导致PHP“已发送标题”警告。
例如,正常的HTTP服务器->客户端响应如下所示:
HTTP/1.1 200 OK
Content-type: text/html
Cookie: ...cookie data here ...
<html><body>Hi mom!</body></html>
但是,如果在调用setcookie之前先进行输出,则最终会得到如下结果:
HTTP/1.1 200 OK
Content-type: text/html
<html><body>Hi mom!</body></html>
Cookie: ... cookie data here ...
这是行不通的。标头只有在响应的标头块中时才是标头。如果它们出现在正文中,则它们不是标题,而是内容的一部分。这就是为什么PHP发出“标题已发送”并且不发送cookie的原因。不能-火车已经离开车站了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句