我寫了下面一段代碼,它在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