没有正确显示cookie计数

时间:2011-07-22 12:38:42

标签: php cookies

我有一个文件basket.php完全显示计数,但在另一个php文件product.php中,它总是显示0编码如下:

basket.php

<?php
//include(dirname(__FILE__)."/../config.php");

if (isset($_COOKIE["products"])) {
    //Count of all products in basket
    $BasketCount = count($_COOKIE['products']);
  //Loop through and get each cookie
    foreach ($_COOKIE['products'] as $name) {
        $name = htmlspecialchars($name);
        echo "$name <a href='remove.php?remove=$name'>Click here to remove from basket</a> <br />\n";
    }
    echo "Basket Count: $BasketCount";

}else{
    echo "Basket is empty";
}
?>

product.php (只是获得篮子数的线)

$basketcount = count($_COOKIE['products']);

以下是我设置cookie的方式

addtobasket.php

<?php
include(dirname(__FILE__)."/../config.php");

$product = $_GET['p'];

setcookie("products[$product]", $product);


echo "$product added to basket";
//Show current basket products


?>

3 个答案:

答案 0 :(得分:1)

路径可能会出现问题 - http://www.php.net/manual/en/function.setcookie.php$path参数。或域名。

答案 1 :(得分:1)

不是实际答案,但仍然相关:

假设您正在制作带有购物篮/购物车系统的商业网站,我会建议: 不要依赖COOKIES ,永远不要。它存储在客户端,可以轻松修改。此外,一些浏览器只是拒绝它们,因此你的购物篮将不起作用。

使用$_SESSION[]代替,它们只存储标识符客户端。更安全,既可以防止黑客攻击代码漏洞,也可以解决任何问题。

答案 2 :(得分:0)

可能是您在设置cookie之前运行product.php ..

除了那段代码对我来说没问题。

或者您可以通过此代码检查Cookie是否已设置..

如果(isset($ _ COOKIE [ '产品'] [$产物])){

  echo "cookie is set..";

}

这样你就会有自己的想法......