Php новый cookie перезаписывает предыдущий - PullRequest
0 голосов
/ 09 декабря 2018

На странице продукта интернет-магазина я отправляю идентификатор продукта с ajax в этот файл 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.';

}
?>

Моя проблема в том, что когда у меня есть идентификаторы в файле cookie kedvenc_termek, и я хочучтобы добавить другой идентификатор продукта в качестве предпочтительного продукта, новое значение файла cookie перезапишет значение в файле cookie.

Например, если в файле cookie хранится 179 и я добавляю в него идентификатор продукта 180,значение cookie будет 180, а не 179 180.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Вы перезаписываете значение каждый раз.Поэтому вам нужно добавить значение, а не перезаписать его

$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), "/");
0 голосов
/ 09 декабря 2018

Вам нужно использовать массив для сохранения данных.Вы можете использовать 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.';    
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...