我应该在设置后检查cookie是否存在?

时间:2013-01-09 18:18:48

标签: php cookies

使用良好的开发实践,应该在设置后检查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
    ...
?>

3 个答案:

答案 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全局issetarray_key_exists检查是否存在值。