В «печеньках» можно оказывается хранить массивы! Хотя нет, правильнее будет наверно сказать так: «В куках можно представить данные таким образом, что их можно будет обрабатывать, как массивы».

Область применения: В моем случае, это позволить неавторизованным пользователям, т.е. гостям, добавлять товары в избранное. Cookies — оптимальный вариант. Однако, если посетитель добавит несколько товаров в избранное, то если мы сохраняем в куках ID товара, было бы удобно использовать обычный массив

$favorits = array("1", "2", "9");

Соответственно товары, у которых ID равен значениям 1, 2 или 9 — именно те, которые пользователь выбрал

В куки нельзя напрямую добавить массив. Но можно не очень напрямую

// Отправка cookie
setcookie("favorits[1]", "product_id_1");
setcookie("favorits[2]", "product_id_2");
setcookie("favorits[9]", "product_id_9");

// После перезагрузки страницы, выведем cookie
if (isset($_COOKIE["favorits"])) {
  foreach ($_COOKIE["favorits"] as $id => $val) {
    $id = htmlspecialchars($id); // Именно ключ массива!
  }
}

Думаю, будет логично, если ID будет именно ключем, а не значением. В таком случае значение $val не очень то и нужно, хотя туда можно запихнуть другую полезную информацию, например заголовок.

В таком случае удалить конкретный товар из избранного будет тоже предельно легко! Мы просто удаляем cookie, в которых ключ массива в favorits равен ID удаляемого товара.

Итого, мы получили весьма удобный вариант хранения данных в $_COOKIE, с которым удобно работать и которым очень удобно манипулировать. Абсолютно не нужно писать ID в строку через запятые, потом перегонять их в массив, потом обратно в строку, потом искать вхождения в строке, пытаясь убрать ненужные нам данные, и т.д.


Комментариев нет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

*

*