在网上商店的产品页面中,我将带有ajax的产品ID发送到此php文件:
<?php
include_once("connect.php");
if(isset($_POST['product_id']))
{
$product_id = mysqli_real_escape_string($kapcs, $_POST['product_id']);
$cookie_name = "kedvenc_termek";
$cookie_value = $product_id;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
echo 'Saved to the favorit products.';
}
?>
我的问题是,当我在kedvenc_termek cookie中有id-s,并且我想添加另一个产品id作为收藏产品时,新的cookie值将覆盖cookie中的值。
例如,如果我在cookie中存储了179,并且向其中添加了180个产品ID,则cookie值将为180,而不是179180。
答案 0 :(得分:0)
您需要使用数组来保存数据。您可以使用PHP的serialize()
方法将数组数据另存为字符串,并使用unserialize()
读取数据。试试这个:
<?php
include_once("connect.php");
if(isset($_POST['product_id']) && is_int($_POST['product_id'])) {
$product_id = $_POST['product_id'];
$cookie_name = "kedvenc_termek";
$data = unserialize($_COOKIE[$cookie_name]);
if(!in_array($product_id, $data)) {
$data[] = $product_id;
}
setcookie($cookie_name, serialize($data), time() + (86400 * 30), "/");
echo 'Saved to the favorite products.';
}
?>
答案 1 :(得分:0)
您每次都覆盖值。因此,您需要附加值,而不要覆盖它
$cookie_name = "kedvenc_termek";
$cookie_value = '';
if(isset($_COOKIE[$cookie_name])) {
$cookie_value = $_COOKIE[$cookie_name] . ',';
}
$cookie_value .= $product_id;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");