我写了下面一段代码,它在Firefox中正常工作。Cookie正在被覆盖而不是创建一个新的
// add product
if(isset($_GET['add'])) {
$pointer = 1;
foreach ($_COOKIE['cart'] as $posit => $value) {
$pointer = $posit+1;
}
setcookie('cart['.$pointer.']', $_GET['add'] , time() + 60*60*24*$cookie_cart , '/');
header('Location: cart.php');
}
的问题是,当我用Safari浏览器试了一下(所以我想在其他浏览器可能会出现同样的问题。当函数的foreach()运行所发生的是,Safari浏览器读取的cookies以相反的顺序Firefox没有,所以我们假设定义了以下cookie:cart [1],cart [2],cart [3]。Firefox按照这个顺序排列,所以当我添加一个新的cookie时,它被存储为购物车[4],而Safari相反,做$指针永远是1 + 1,把它作为车[2]我每次添加一个新产品的时间。
我试图解决这个的方法很多,但至今未果。
谢谢。
只要他们不删除从cookie什么。我假设这是一个购物车,所以他们可能会。 – 2013-05-01 22:50:45
不要再次遇到你的情况,但你最好使用json_encode/json_decode。 Serialize可以允许远程执行的代码。类有一个__wakeup魔术方法,它被反序列化调用。尽管实际上他们应该只使用会话,但这不再是一个问题。 – 2013-05-01 23:02:10
是的,我最终只使用会话。无论如何感谢您的回复;) – 2013-05-22 14:20:17