PHP - 在按钮单击时向cookie中的现有数组添加值

时间:2017-06-06 14:07:23

标签: php ajax cookies

我想在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);

2 个答案:

答案 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);