- 07, Feb 2014
- #1
Cookies это текстовые файлы, получаемые от сервера и хранящиеся на стороне клиента. В них сервер заносит нужную ему информацию - сколько раз вы посетили его сайт, что искали, и при необходимости может записывать туда ваш логин и пароль.
...Установка cookies...
Для установки кукисов используется функция SetCookie(), для которой можно указать шесть параметров, один из которых является обязательным.
name - имя устанавливаемого cookie (строка);
value - определяет значение переменной (строка);
expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.
path - путь к Cookie (строка);
domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;
secure - передача Cookie через защищенное HTTPS-соединение.
Установим cookies с параметрами name и value:
SetCookie("Hello","Bla bla bla");
Так как мы не указали параметр expire (время жизни кукисов) то они будут жить до закрытия браузера.
Важно помнить, что установка кукисов должна происходить до первого вывода информации в браузер.
Вот так делать не правильно:
echo "Привет";
SetCookie("Name","Value");
А вот так правильно:
SetCookie("Name","Value");
echo "Привет";
...Время жизни cookies...
Время жизни cookies устанавливается в секундах. Окей, установим печеньку со сроком жизни 1 час. 1 час = 60 минут = 3600 секунд.
setcookie("name", "value", time() + 3600);
В PHP есть еще одна функция для работы с временем - mktime() . Установим живучесть cookies до 1 января 2012 года
setcookie("name", $value, mktime(0,0,0,01,01,2012));
Не понятно? Посмотрите информацию о функциях time() и mktime() самостоятельно, я этого не буду делать дабы не отходить от темы урока.
...Удаление cookies...
Чтобы удалить cookie используется та же SetCookie с тем же именем и пустым значением: SetCookie("Test","");
...Чтение cookies...
Ну установили мы cookies юзеру, а что дальше то? А дальше - обратиться к cookies и получить из него то что нам нужно
Для обращения к cookies используется глобальный массив $_COOKIE['CookieName'];
Некоторые пользователи отключают возможность устанавливать у себя на компе кукисы.
Для предотвращения ошибок в этом случае, нужно просто проверить существует ли указанная cookies функцией isset() - if (isset($_COOKIE['name'])) echo "Спасибо что разрешил браузеру принимать кукисы с нашего сервера"; else echo "Включи возможность принимать кукисы";
...Тренируемся...
А давайте программировать?
Итак, наша задача: создать две странички. На первой страничке мы устанавливаем юзеру cookies, а на второй считываем их
Первая страничка:
setcookie("hacker-school", "школу хакеров!!!"); // установили кукис с живучестью до закрытия браузера.
?>
Вторая страничка:
echo "Добро пожаловать на ";
echo $_COOKIE['hacker-school']; // выводим значение из cookies
?>
Если юзер побывал на первой страничке, то при заходе на вторую он увидит Добро пожаловать на школу хакеров!!!. А если он сразу зашел на вторую, то увидит только Добро пожаловать на . Почему? Догадайтесь сами!!!
Ладно, прикольнемся над юзером. И заодно отсеем не нужных, т.е. тех, кто не побывая на первой страничке сразу зашел на вторую! (Вот наглешь!)
echo "Добро пожаловать на ";
if (isset($_COOKIE['hacker-school'])) echo "Да, ты свой, проходи
"; else echo "Вон отсюда, ламер!!!";
?>
Однако знайте, что прочитать вы сможете только свои кукисы. Если ламер побывал на сайте site.com от которого ему пришли куки, то никто другой кроме сайта site.com не сможет их прочитать.
Ну и напоследок напишем счетчик посещений. Код:
header("Content-Type: text/html; charset=utf-8"); // Обязательно указываем кодировку символов.
If (isset($_COOKIE['counter'])) { // Если у юзера существует COOKIES с именем counter (регистр важен!), то:
$counter = $_COOKIE['counter']; // Переменная counter хранит число посещений. Берем её из куков.
$counter++; // Увеличиваем переменную на 1.
setcookie("counter", $counter); // Устанавливаем новое значение куков, уже на единицу больше. Важно: устанавливаем куки до первого вывода текста в браузер!
echo "Вы посетили эту страницу $counter раз"; } else { // Выводим текст с числом посещений. Если у юзера куки не найдены, то:
$counter = 1; // Создаем переменную counter со значением 1.
setcookie("counter", $counter); // Устанавливаем кукисы, ДО ПЕРВОГО ВЫВОДА ТЕКСТА В БРАУЗЕРЕ!!!
echo "Вы тут первый раз"; // А теперь выводим текст, что он зашел сюда первый раз.
}
?>
Вот и всё. Кстати, такой счетчик очень легко обойти.
Пользователь может просто удалить или перезаписать кукис, а может просто долго не заходить на сайт, и время жизни cookies истечет само.
Для надежности надо использовать параллельно и другие методы, например проверять IP (это тоже легко обходится) или использовать сессии.
Я писал не полноценный счетчик, а просто показал пример использования таких полезных штучек под названием cookies.
...Установка cookies...
Для установки кукисов используется функция SetCookie(), для которой можно указать шесть параметров, один из которых является обязательным.
name - имя устанавливаемого cookie (строка);
value - определяет значение переменной (строка);
expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.
path - путь к Cookie (строка);
domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;
secure - передача Cookie через защищенное HTTPS-соединение.
Установим cookies с параметрами name и value:
SetCookie("Hello","Bla bla bla");
Так как мы не указали параметр expire (время жизни кукисов) то они будут жить до закрытия браузера.
Важно помнить, что установка кукисов должна происходить до первого вывода информации в браузер.
Вот так делать не правильно:
echo "Привет";
SetCookie("Name","Value");
А вот так правильно:
SetCookie("Name","Value");
echo "Привет";
...Время жизни cookies...
Время жизни cookies устанавливается в секундах. Окей, установим печеньку со сроком жизни 1 час. 1 час = 60 минут = 3600 секунд.
setcookie("name", "value", time() + 3600);
В PHP есть еще одна функция для работы с временем - mktime() . Установим живучесть cookies до 1 января 2012 года
setcookie("name", $value, mktime(0,0,0,01,01,2012));
Не понятно? Посмотрите информацию о функциях time() и mktime() самостоятельно, я этого не буду делать дабы не отходить от темы урока.
...Удаление cookies...
Чтобы удалить cookie используется та же SetCookie с тем же именем и пустым значением: SetCookie("Test","");
...Чтение cookies...
Ну установили мы cookies юзеру, а что дальше то? А дальше - обратиться к cookies и получить из него то что нам нужно
Для обращения к cookies используется глобальный массив $_COOKIE['CookieName'];
Некоторые пользователи отключают возможность устанавливать у себя на компе кукисы.
Для предотвращения ошибок в этом случае, нужно просто проверить существует ли указанная cookies функцией isset() - if (isset($_COOKIE['name'])) echo "Спасибо что разрешил браузеру принимать кукисы с нашего сервера"; else echo "Включи возможность принимать кукисы";
...Тренируемся...
А давайте программировать?
Итак, наша задача: создать две странички. На первой страничке мы устанавливаем юзеру cookies, а на второй считываем их
Первая страничка:
setcookie("hacker-school", "школу хакеров!!!"); // установили кукис с живучестью до закрытия браузера.
?>
Вторая страничка:
echo "Добро пожаловать на ";
echo $_COOKIE['hacker-school']; // выводим значение из cookies
?>
Если юзер побывал на первой страничке, то при заходе на вторую он увидит Добро пожаловать на школу хакеров!!!. А если он сразу зашел на вторую, то увидит только Добро пожаловать на . Почему? Догадайтесь сами!!!
Ладно, прикольнемся над юзером. И заодно отсеем не нужных, т.е. тех, кто не побывая на первой страничке сразу зашел на вторую! (Вот наглешь!)
echo "Добро пожаловать на ";
if (isset($_COOKIE['hacker-school'])) echo "Да, ты свой, проходи
"; else echo "Вон отсюда, ламер!!!";
?>
Однако знайте, что прочитать вы сможете только свои кукисы. Если ламер побывал на сайте site.com от которого ему пришли куки, то никто другой кроме сайта site.com не сможет их прочитать.
Ну и напоследок напишем счетчик посещений. Код:
header("Content-Type: text/html; charset=utf-8"); // Обязательно указываем кодировку символов.
If (isset($_COOKIE['counter'])) { // Если у юзера существует COOKIES с именем counter (регистр важен!), то:
$counter = $_COOKIE['counter']; // Переменная counter хранит число посещений. Берем её из куков.
$counter++; // Увеличиваем переменную на 1.
setcookie("counter", $counter); // Устанавливаем новое значение куков, уже на единицу больше. Важно: устанавливаем куки до первого вывода текста в браузер!
echo "Вы посетили эту страницу $counter раз"; } else { // Выводим текст с числом посещений. Если у юзера куки не найдены, то:
$counter = 1; // Создаем переменную counter со значением 1.
setcookie("counter", $counter); // Устанавливаем кукисы, ДО ПЕРВОГО ВЫВОДА ТЕКСТА В БРАУЗЕРЕ!!!
echo "Вы тут первый раз"; // А теперь выводим текст, что он зашел сюда первый раз.
}
?>
Вот и всё. Кстати, такой счетчик очень легко обойти.
Пользователь может просто удалить или перезаписать кукис, а может просто долго не заходить на сайт, и время жизни cookies истечет само.
Для надежности надо использовать параллельно и другие методы, например проверять IP (это тоже легко обходится) или использовать сессии.
Я писал не полноценный счетчик, а просто показал пример использования таких полезных штучек под названием cookies.