我正在尝试将数组存储到cookie中。我将我的数组产品项存储在cookie数组中,但它会抛出错误。
$products = array();
$item = array($id => $name);
print_r($item);
$products[] = $item;
setcookie('products',json_encode($products),strtotime( '+1 day' ));
var_dump($_COOKIE['products']);
上面的代码打印
阵列( [4] => Rug Rat)
注意事项:未定义的索引:产品在 d:\ XAMPP \ htdocs中\项目\包括\类\ products.php 在线 43
NULL
答案 0 :(得分:3)
将响应发送到客户端时设置Cookie。这意味着在下一个请求之前,您将无法从PHP代码访问它们。请参阅setcookie()
函数的文档,常见陷阱部分:
在下次加载可以看到Cookie的网页之前,Cookie才会显示。要测试cookie是否已成功设置,请在cookie过期前检查下一个加载页面上的cookie。过期时间通过expire参数设置。调试cookie存在的一种好方法是简单地调用print_r($ _ COOKIE);。
http://php.net/manual/en/function.setcookie.php
因此,除非您echo
发生任何事情,或执行导致响应标头发送的任何其他内容,否则您应该在刷新页面后看到var_dump
ed cookie内容。在您的代码中,调用print_r($item);
之前会setcookie()
,因此您可能会收到headers already sent
警告,并且cookie从未设置过。
无论如何,假设设置了数组索引很少是安全的,特别是在超全局中,例如$_GET
,$_POST
,$_COOKIE
等。您应该始终检查如果索引确实已设置,请使用isset()
或array_key_exists
。