Как использовать cookies в PHP


Сохранить cookie в браузере можно с помощью простой функции php setcookie(). Полный синтаксис функции таков:

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

При этом обязательными параметрами, по сути, являются лишь два: $name и $value, то есть это пара «ключ-значение». Разберем пример.

Допустим, нам необходимо сохранить числовое значение 5 в куках под именем myNumber. Мы можем сделать это следующим образом:

1
2
<?php
setcookie("myNumber", 5);

Если мы хотим, чтобы данная кука существовала всего 2 часа, то нам необходимо добавить третий параметр — «время жизни» куки:

1
2
<?php
setcookie("myNumber", 5, time() + 7200);

Третий параметр — это точка времени в секундах, до которой указанное значение куки должно существовать. Мы используем функцию time(), чтобы получить текущую метку времени в секундах и добавляем к ней еще 7200 секунд, т.е. два часа.

Если нужно удалить определенную куку, то можно воспользоваться все той же функцией setcookie(), установив уже прошедшее время и пустое значение:

1
2
<?php
setcookie("myNumber", "", time() - 8000);

Разберем другие параметры, принимаемые функцией:

$path — используется, если необходимо ограничить директорию на сервере, из которой будет доступна сохраняемая кука
$domain — если указывается домен второго уровня, то кука будет доступна для него и для его поддоменов
$secure — если указать true, то кука будет передаваться только при наличии защищенного соединения https
$httponly — в случае значения true кука передается только по http-протоколу

Для получения значения нужной куки можно использовать суперглобальный массив $_COOKIE, указывая в качестве индекса элемента в массиве его имя:

1
2
<?php
$myNumber = $_COOKIE['myNumber'];

Чтобы не возникало ошибок в случае отсутствия нужных значений, рекомендуется проверять их существование перед непосредственным обращением по индексу:

1
2
3
4
<?php
if (isset($_COOKIE['myNumber'])) {
    $myNumber = $_COOKIE['myNumber'];
}

Куки в php позволяют также сохранять более сложные структуры данных — массивы. Допустим, нам необходимо сохранить массив с числами $numbers:

1
2
3
<?php
setcookie("numbers[one]", 1);
setcookie("numbers[two]", 2);

Извлечь этот массив данных можно следующим образом:

1
2
3
4
5
6
<?php
if (isset($_COOKIE['numbers'])) {
    foreach ($_COOKIE['numbers'] as $ind => $val) {       
        echo htmlspecialchars($ind) . " : " . htmlspecialchars($val) . " <br />";
    }
}

Здесь мы получаем массив из cookies и проходимся по ним с помощью foreach(), выводя каждое значение и ее имя на экран. Функция htmlspecialchars() в данном контексте используется для безопасного вывода данных, т.к. нужно помнить, что данные, сохраняемые на ПК пользователя можно подделать.





Другие посты

Категория: PHP-скрипты

Оставить комментарий