[Image] Воскресенье, 22.12.2024, 19:02 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2011 » Январь » 24 » Реализация cookie-наборов в сценариях
20:45
Реализация cookie-наборов в сценариях
Теперь, когда мы познакомились с реализацией cookie-наборов, посмотрим, как применить эти знания для создания cookie-наборов, используемых внутри сценариев.
Наиболее очевидным методом установки cookie-набора в PHP-коде является создание заголовка Set-Cookie с помощью PHP-функции header (), как показано в листинге 6.2.
Листинг 6.2. Установка cookie-набора с использованием функции header ()
header("Set-Cookie: mycookie=myvalue; path=/; domain=.coggeshall.org");
?>
Поскольку эта функция используется для отправки HTTP-заголовков, она должна быть выполнена до пересылки содержимого (например, с помощью операторов echo или print). Хотя это работает, такой метод не может быть рекомендован для установки cookie-наборов с использованием PHP-функций. Чуть позже мы рассмотрим функцию setcookie (), используемую для решения этой задачи.
Второй (и, возможно, менее известный) метод установки cookie-наборов — использование HTML-дескрипторов. В частности, HTML-дескриптор <МЕТА> можно использовать для имитации HTTP-заголовков внутри HTML-страницы, применяя атрибуты HTTP-EQUIV и CONTENT. Например, чтобы установить такой же cookie-набор, как в листинге 6.2, можно воспользоваться HTML-кодом, представленным в листинге 6.3.
Листинг 6.3. Установка cookie-набора с использованием HTML-дескриптора <МЕТА>
<HEAD>
<!-- другой HTML-код //—>
<МЕТА HTTP-EQUIV="Set-Cookie"
CONTENT="mycookie=myvalue; path=/; domain=.coggeshall.org">
</HEAD>
<!— остаток HTML-документа //—>
НА ЗАМЕТКУ
Дескриптор <МЕТА> хорош не только для установки cookie-наборов. Несмотря на то что он зависит от используемого браузера, большинство известных браузеров поддерживают
HTTP-заголовки, заключенные в дескриптор <МЕТА>. Например, с помощью HTTP-заголовка Refresh можно перенаправить браузер на новую страницу:
<МЕТА HTTP-EQUIV="Refresh" CONTENT="0; url=http://www.coggeshall.org">
Третий и возможно наиболее известный метод установки cookie-наборов — использование PHP-функции setcookie (). Функция setcookie () имеет следующий синтаксис: setcookie($name [,$value [, $expire [, $path [, $domain [, $secure]]]]]);
Эта функция применяется как для создания, так и уничтожения cookie-наборов в клиентском браузере. Как и в случае с отсылкой HTTP-заголовков из РНР-сценария, эта функция должна быть выполнена до отправки клиенту любого содержимого. Перед тем как перейти к исследованию этой функции, вкратце рассмотрим каждый параметр. Для большинства частей назначение каждого параметра такое же, как и у заголовка Set-Cookie, рассмотренного ранее. В частности, $name представляет имя переменной cookie-набора, $value — ее текущее значение, $expire — метка времени Unix актуальности cookie-набора, $path — путь на сервере, для которого создан cookie-набор, $domain — домен, для которого создан cookie-набор, и, наконец, $ secure — это булевское значение, показывающее, что cookie-набор создан только для защищенного HTTP.
При использовании функции setcookie() любые необязательные параметры могут быть при необходимости установлены в NULL. В листинге 6.4 показа пример применения функции setcookie () для установки cookie-набора, аналогичного приведенному в листинге 6.2.
Листинг 6.4. Использование функции setcookie ()
setcookie("mycookie", "myvalue", NULL, "/", ".coggeshall.org");
?>
Если нужно изменить значение cookie-набора, как в случае, когда мы напрямую ра-
ботали с заголовком Set-Cookie, нужно убедиться, что значения $path, $domain и
$name функции setcookie () идентичны первоначально использованным. Для удале-
ния cookie-набора можно использовать небольшую хитрость — задать параметр $value
равным NULL (при этом параметры $path, $domain и $name должны быть установлены
должным образом). Пример удаления cookie-набора, установленного в листинге 6.4,
представлен в листинге 6.5.
Листинг 6.5. Удаление cookie-набора с использованием функции setcookie ()
setcookie("mycookie", NULL, NULL, "/", ".coggeshall.org");
?>
После того как cookie-набор установлен, он остается неактивным до момента, когда браузер запросит у Web-сервера другой документ. Для получения доступа к значению cookie-набора, полученного от браузера, РНР использует суперглобальный массив $_С00К1Е. Этот массив аналогичен массивам $_GET и $_POST за исключением того, что он хранит значения cookie-наборов. Каждый ключ в этом суперглобальном массиве представляет отдельный cookie-набор (имя ключа — это имя переменной cookie-набора) .
Для иллюстрации этого примера выполним общую задачу и напишем сценарий, определяющий, активен ли cookie-набор на клиентском браузере. Для этого, вопервых, потребуется создать cookie-набор, а потом заставить браузер перезагрузить страницу. Когда браузер перезагрузит страницу, он, если примет этот cookie-набор, немедленно вернет его серверу. Проверив наличие этого cookie-набора при перезагрузке страницы, можно проверить работоспособность cookie-набора.
Единственная хитрость в этом сценарии — определить, был ли установлен cookie-набор или браузер по какой-либо причине его отверг. Для того чтобы дать возможность сценарию определить, был ли установлен cookie-набор, при перенаправлении браузера необходимо использовать параметр GET, как показано в листинге 6.6.
Листинг 6.6. Проверка поддержки cookie-наборов из РНР
<?php
if(!isset($_GET[!testcookie'])) {
setcookie("testcookie", "test value");
header("Location: {$_SERVER["PHP_SELF"J}?testcookie=l");
exit;
} else {
if(isset($_COOKIE['testcookie'])) {
setcookie("testcookie");
echo "Прием cookie-наборов включен";
} else {
echo "cookie-наборы не поддерживаются!";
Видно, что сценарий разделен на две части. В первой половине оператора if делается попытка создать cookie-набор и затем перенаправить браузер на другую страницу с помощью дополнительного параметра GET. После повторного выполнения сценария с дополнительным параметром проверяется существование cookie-набора. В том случае, если клиент не поддерживает cookie-наборы, тестовый cookie-набор уничтожается вызовом функции setcookie () без параметров.
Категория: Все о PHP | Просмотров: 1367 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 1
1 Haidoimisse  
0
Допустимые вечер! Связь описанием моей работы , на самом деле завершен , перейдите к шагу реализации.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [592]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [48]
Полезное [392]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 6
Гостей: 5
Пользователей: 1
kapriolavn
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru