Php cookies сохранить массив

Cookie (куки) представляют небольшие наборы данных (не более 4 кБайт), с помощью которых веб-сайт может сохранить на компьютере пользователя любую информацию. С помощью куки можно отслеживать активность пользователя на сайте: залогинен пользователь на сайте или нет, отслеживать историю его визитов и т.д.

Для установки куки на компьютере пользователя используется функция setcookie() . Она должна вызываться перед тем, как будет отправлен ответ пользователю. Эта функция имеет следующее определение:

bool setcookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly);

Функция setcookie() может принимать следующие параметры:

  1. name имя cookie, которое будет использоваться для доступа к его значению
  2. value значение или содержимое cookie — любой алфавитно-цифровой текст не более 4 кБайт
  3. expire (необязательный параметр) срок действия в секундах, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера. Обычно устанавливается относительно текущего времени, которое можно получить с помощью функции time()
  4. path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie . Если задать «/», cookie будут доступны для всего сайта. Если задать, например, «/mydir/» , cookie будут доступны только из каталога /mydir/ и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie
  5. domain (необязательный параметр): задает домен, для которого будут доступны cookie . Если это домен второго уровня, например, localhost.com , то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com . Если задан поддомен blog.localhost.com , то cookie доступны только внутри этого поддомена
  6. secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false .
  7. httponly (необязательный параметр): если равно true , cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false
Читайте также:  Bootstrap html что это

Здесь устанавливаются две куки: name и age . Первая куки уничтожается после закрытия браузера, а вторая — через 3600 секунд, то есть через час.

При необходимости мы можем увидеть сохраненные куки в браузере с помощью инструментов разработчика. Например, вид куки в Google Chrome:

Куки cookie в PHP и setcookie

В cookie можно сохранить любую информацию, но не стоит сохранять важные с точки зрения безопасности данные, например, пароли. А если и сохранять какую-то важную информацию, то следует хранить ее в зашифрованном виде.

"; if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "
";

Чтобы получить cookie, можно использовать глобальный ассоциативный массив $_COOKIE , например, $_COOKIE[«name»] . Так, получим ранее сохраненные куки:

"; if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "
";

Сохранение в куки массивов имеет некоторые особенности. Например, сохраним следующий массив:

setcookie("lang[1]", "PHP"); setcookie("lang[2]", "C#"); setcookie("lang[3]", "Java");

Теперь получим его и выведем на страницу:

Для удаления cookie достаточно в качестве срока действия указать какое-либо время в прошлом:

setcookie ("name", "", time() - 3600);

Источник

Php cookies сохранить массив

Cookie (куки) представляют небольшие наборы данных (не более 4 кБайт), с помощью которых веб-сайт может сохранить на компьютере пользователя любую информацию. С помощью куки можно отслеживать активность пользователя на сайте: залогинен пользователь на сайте или нет, отслеживать историю его визитов и т.д.

Для установки куки на компьютере пользователя используется функция setcookie() . Она должна вызываться перед тем, как будет отправлен ответ пользователю. Эта функция имеет следующее определение:

bool setcookie(string $name, string $value, int $expire, string $path, string $domain, bool $secure, bool $httponly);

Функция setcookie() может принимать следующие параметры:

  • name : имя cookie, которое будет использоваться для доступа к его значению
  • value : значение или содержимое cookie — любой алфавитно-цифровой текст не более 4 кБайт
  • expire (необязательный параметр): срок действия в секундах, после которого cookie уничтожаются. Если данный параметр не установлен или равен 0, то уничтожение cookie происходит после закрытия браузера. Обычно устанавливается относительно текущего времени, которое можно получить с помощью функции time()
  • path (необязательный параметр): путь к каталогу на сервере, для которого будут доступны cookie. Если задать «/», cookie будут доступны для всего сайта. Если задать, например, «/mydir/» , cookie будут доступны только из каталога /mydir/ и всех его подкаталогов. По умолчанию значением является текущий каталог, в котором устанавливаются cookie.
  • domain (необязательный параметр): задает домен, для которого будут доступны cookie. Если это домен второго уровня, например, localhost.com , то cookie доступны для всего сайта localhost.com, в том числе и для его поддоменов типа blog.localhost.com . Если задан поддомен blog.localhost.com , то cookie доступны только внутри этого поддомена.
  • secure (необязательный параметр): указывает на то, что значение cookie должно передаваться по протоколу HTTPS. Если задано true , cookie от клиента будет передано на сервер, только если установлено защищенное соединение. По умолчанию равно false .
  • httponly (необязательный параметр): если равно true , cookie будут доступны только через http протокол. То есть cookie в этом случае не будут доступны скриптовым языкам, например, JavaScript. По умолчанию параметр равен false

Здесь устанавливаются две куки: «name» и «age». Первая куки уничтожается после закрытия браузера, а вторая — через 3600 секунд, то есть через час.

При необходимости мы можем увидеть сохраненные куки в браузере с помощью инструментов разработчика. Например, вид куки в Google Chrome:

Куки cookie в PHP и setcookie

В cookie можно сохранить любую информацию, но не стоит сохранять важные с точки зрения безопасности данные, например, пароли. А если и сохранять какую-то важную информацию, то следует хранить ее в зашифрованном виде.

Чтобы получить cookie, можно использовать глобальный ассоциативный массив $_COOKIE , например, $_COOKIE[«name»] . Так, получим ранее сохраненные куки:

"; if (isset($_COOKIE["age"])) echo "Age: " . $_COOKIE["age"] . "
"; ?>

Сохранение в куки массивов имеет некоторые особенности. Например, сохраним следующий массив:

setcookie("lang[1]", "PHP"); setcookie("lang[2]", "C#"); setcookie("lang[3]", "Java");

Теперь получим его и выведем на страницу:

if (isset($_COOKIE["lang"])) < foreach ($_COOKIE["lang"] as $name =>$value) < $name = htmlspecialchars($name); $value = htmlspecialchars($value); echo "$name. $value 
"; > >

Для удаления cookie достаточно в качестве срока действия указать какое-либо время в прошлом:

setcookie ("name", "", time() - 3600);

Источник

Запись массива в Cookies

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

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

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

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

$products = ["1", "2", "3"]; // Отправка cookie setcookie("products[1]", "product_id_1"); setcookie("products[2]", "product_id_2"); setcookie("products[3]", "product_id_3"); // После перезагрузки страницы, выведем cookie if (isset($_COOKIE["products"])) < foreach ($_COOKIE["products"] as $id =>$val) < $id = htmlspecialchars($id); echo $id; // 1, 2, 3 >>

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

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

$products = ["1", "2", "3"]; setcookie("products", json_encode($products)); if (isset($_COOKIE["products"])) < $products = json_decode($_COOKIE["products"]); foreach ($products as $id) < echo $id; // 1, 2, 3 >>
$products = ["1", "2", "3"]; setcookie("products", base64_encode(serialize($products))); if (isset($_COOKIE["products"])) < $products = unserialize(base64_decode($_COOKIE["products"])); foreach ($products as $id) < echo $id; // 1, 2, 9 >>

Источник

Как хранить массив в куках. Два способа

В этой статье я хочу показать два способа как хранить в куках массив.
Как всем известно, хранить массив в том виде как он есть, в куках нельзя. В куки можно записывать только строковые значения.
Все что нам нужно это просто преобразовать массив в строку и записать в куку. И потом прочитать из кук и преобразовать строку опять в массив.

Я нашел несколько способов, для конвертирования массива в строку и обратно. Первый спосовб — это сериализация, а второй это разложение с помощью функции implode.
Ниже приведены четыре функции — две из них переводят массив в староку и записываютс в куку, и две другие читают куки и переводят строку обратно в массив.

// записываем function setArrayInCookie($nameCookies, $array) < $value = serialize($array); setcookie($nameCookies, $value, time()+3600*24); return true; >// читаем function getArrayInCookie($nameCookies)< if(isset($_COOKIE[$nameCookies]))< $result = unserialize($_COOKIE[$nameCookies]); >else < $result = false; >return $result; > // записываем function setArrayInCookie2($nameCookies, $array) < $value = implode('|||', $array); setcookie($nameCookies, $value, time()+3600*24); return true; >// читаем function getArrayInCookie2($nameCookies)< if(isset($_COOKIE[$nameCookies]))< $result = explode('|||', $_COOKIE[$nameCookies]); >else < $result = false; >return $result; >

UPD 22.11.2016 Еще один способ, который оказался удобнее предыдущих: можно кодировать и декодировать массив в формат json, с помощью функций json_encode и json_decode

Источник

Оцените статью