В «печеньках» можно оказывается хранить массивы! Хотя нет, правильнее будет наверно сказать так: «В куках можно представить данные таким образом, что их можно будет обрабатывать, как массивы».
Область применения: В моем случае, это позволить неавторизованным пользователям, т.е. гостям, добавлять товары в избранное. 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 в строку через запятые, потом перегонять их в массив, потом обратно в строку, потом искать вхождения в строке, пытаясь убрать ненужные нам данные, и т.д.
Комментариев нет