1

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

3 回答 3

3

只需检查返回值,如果为 false 则失败。否则,您可以认为它已设置(我从未见过在这种情况下未设置)。

if(setcookie('anonymous_cart', $cookie_guid)){
    // Joy, cookie was set
}

但是,如果设置的 cookie 至关重要,那么检查它不会有任何伤害(很多)。

编辑

对于那些指出这并不能保证 cookie 被接受的人,我同意并且没有说它确实(怎么可能?客户甚至还没有收到 cookie)。它只是意味着设置了 cookie 。这是op问的。

于 2013-01-09T18:23:14.047 回答
2

您无需在设置后立即检查以确保它存在,但最佳做法是在使用它之前检查以确保它存在。

于 2013-01-09T18:23:52.080 回答
1

鉴于 Cookie 依赖于本地化的浏览器设置,它们本质上是不可靠的。

确保您进行了有效的处理,以防在您的脚本查找该值时无法从客户端检索该值。在某些情况下,这甚至可能需要在前端指示用户启用 cookie 或将您的域添加到他们的例外安全站点列表中,特别是因为您似乎正在实施的是购物系统。

Check setcookies's return value intially to make sure your server could send the value, but don't directly rely on this as implying the cookie was accepted. Always check for presence of the value using isset or array_key_exists on the cookie global at the point you need to use the value.

于 2013-01-09T18:32:03.953 回答