使用良好的开发实践,应该在设置后检查setcookie
是否存在,或者知道它是否设置为100%?谢谢。
<?php
require "includes/settings.php";
require "functions/php_function_library.php";
$item_id = $_REQUEST['item_id'];
$item_qty = $_REQUEST['quantity'];
echo $item_id;
echo $item_qty;
$cookie_guid = guid();
setcookie("anonymous_cart", $cookie_guid);
#check that the cookie I just set exists?
#insert new cart record into DB
...
?>
答案 0 :(得分:3)
只需检查返回值,如果为false则失败。否则你可以考虑它设置(我从来没有看到它在这种情况下没有设置)。
if(setcookie('anonymous_cart', $cookie_guid)){
// Joy, cookie was set
}
但是,如果设置的cookie非常重要,那么检查它不会造成太大的伤害。
修改强>
对于那些指出这不能保证cookie被接受的人,我同意并且没有说它确实如此(怎么可能呢?客户端还没有收到cookie)。它只是意味着cookie 设置。这是op问的。
答案 1 :(得分:2)
您无需在设置后立即检查以确定它是否存在,但最好在使用之前检查以确保它存在。
答案 2 :(得分:1)
鉴于Cookie依赖于本地化的浏览器设置,因此本质上不可靠。
确保您具有有效的处理,以防在脚本查找时无法从客户端检索值。在某些情况下,这甚至可能需要指示前端的用户启用cookie或将您的域添加到他们的例外安全站点列表中,特别是因为您似乎正在实施的是购物系统。
检查setcookies
的返回值,以确保您的服务器可以发送该值,但不要直接依赖此值,因为暗示cookie已被接受。在您需要使用该值时,请务必使用Cookie全局isset
或array_key_exists
检查是否存在值。