我想在cookie中的现有数组变量中添加值。
目前我使用Ajax设置我的cookie:
的Ajax:
function setcookie(productid){
$.ajax({
type: 'POST',
url: "setcookies.php",
data: {
id: "productid"
},
success: function (e) {
alert(e);
}
});
}
PHP setcookies.php
<?php
$cookiename = "products";
$cart = array();
$pid = $_POST['id'];
array_push($cart, $pid);
setcookie($cookiename, serialize($cart), time() + 3600, "/");
$_COOKIE[$cookiename] = serialize($cart);
当我点击addproduct按钮时,将调用setcookie()函数。 单击“添加产品”按钮三次,我预计产品的3个ID应该添加到cookie数组中,但是当我访问将在页面中显示cookie的页面时,它将只显示最后添加的产品。
先谢谢你们。
为我的工作代码编辑:
以下代码适用于我: 稍微修改了多米尼克回答的代码。
$cookiename = "products";
$cart = null;
$pid = $_POST['id'];
if (!empty($_COOKIE[$cookiename])) {
$cart = unserialize($_COOKIE[$cookiename]);
array_push($cart, $pid);
} else {
$cart = array();
array_push($cart, $pid);
}
setcookie($cookiename, serialize($cart), time() + 3600, "/");
$_COOKIE[$cookiename] = serialize($cart);
答案 0 :(得分:2)
在您的代码中,您将$ cart实例化为包含0个元素的数组并将其放入$ _COOKIE ['products']中,以便删除现有内容。
它可以解释为什么你只能有一个带有简单元素的数组。
此代码应该有效
<?php
$cookiename = "products";
$cart = array();
if(!empty($_COOKIE[$cookiename])) {
$cart = $_COOKIE[$cookiename];
}
$pid = $_POST['id'];
array_push($cart, $pid);
setcookie($cookiename, serialize($cart), time() + 3600, "/");
$_COOKIE[$cookiename] = serialize($cart);
答案 1 :(得分:0)
<?php
$pid = $_POST['id'];
$cookiename = "products";
$cart = array();
if(isset($_COOKIE[$cookiename]) && !empty($_COOKIE[$cookiename])) {
$cart = unserialize(base64_decode($_COOKIE[$cookiename]));
}
array_push($cart, $pid);
setcookie($cookiename, base64_encode(serialize($cart)), time() + 3600, "/");
//Your Cookie data output
$_COOKIE[$cookiename] = serialize($cart);