我有以下 php 代码:
setcookie('bonjour', 'bonjour', time() + 3600);
setcookie('aurevoir', 'aurevoir', time() + 3600);
print_r(apache_response_headers());
print_r($_COOKIE);
第一次显示:
Array
(
[X-Powered-By] => PHP/5.5.0
[Set-Cookie] => aurevoir=aurevoir; expires=Sat, 31-Aug-2013 10:27:06 GMT; Max-Age=3600
)
Array
(
)
第二个:
Array
(
[X-Powered-By] => PHP/5.5.0
[Set-Cookie] => aurevoir=aurevoir; expires=Sat, 31-Aug-2013 10:26:47 GMT; Max-Age=3600
)
Array
(
[bonjour] => bonjour
[aurevoir] => aurevoir
)
问题是,正如您所看到的,只有第二个/最后一个 cookie 存储在第一个数组的 Set-Cookie 中。那么,我如何使用 headers 数组检测是否设置了两个 cookie?
最佳答案
使用 headers_list() 函数,如下所示:
<?php
setcookie('bonjour', 'bonjour', time() + 5);
setcookie('aurevoir', 'aurevoir', time() + 5);
var_dump(headers_list());
哪些输出:
array (size=3)
0 => string 'X-Powered-By: PHP/5.4.12' (length=24)
1 => string 'Set-Cookie: bonjour=bonjour; expires=Sat, 31-Aug-2013 09:47:48 GMT' (length=66)
2 => string 'Set-Cookie: aurevoir=aurevoir; expires=Sat, 31-Aug-2013 09:47:48 GMT' (length=68)
或者,您可以围绕 setcookie 函数构建一个包装器,并存储有关正在设置的每个 cookie 的记录,但我想以前的解决方案应该足够好了。
关于php - 检测使用 setcookie 函数发送的所有 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18546654/