HTTP-заголовки (HTTP-headers)
PHP, будучи языком вебпрограммирования, поддерживает реализацию механизма отправки заголовков HTTP.
В соответствии со спецификацией HTTP, этот протокол поддерживает передачу служебной информации от сервера к браузеру, оформленной в виде специальных заголовков.
Таким образом, HTTP-headers – это средство общения сервера с удаленным клиентом. Каждый заголовок обычно состоит из одиночной строки ASCII текста с именем и значением. Сами заголовки никак не отображаются в окне браузера, но зачастую могут сильно изменить отображение сопутствующего документа.
Механизм отправки HTTP заголовков в PHP
Механизм отправки заголовков в PHP представлен функцией header(). Особенность протокола HTTP заключается в том, что заголовок должен быть отправлен до посылки других данных, поэтому функция должна быть вызвана в самом начале документа и должна выглядеть следующим образом:
header("HTTP заголовок", необязательный параметр replace);
Опциональный параметр replace может принимать значения типа bool (true или false) и указывает на то, должен ли быть замещен предыдущий заголовок подобного типа, либо необходимо добавить данный заголовок к уже существующему.
В отношении функции header() часто применяется функция headers_sent(), которая в качестве результата возвращает true в случае успешной отправки заголовка и false в обратном случае.
Наиболее используемые HTTP заголовки.
Cache-control
Заголовок управления кешированием страниц. Вообще, данная функция является одной из самых распространенных в использовании заголовков.
Данный заголовок может быть использован со следующими значениями:
· no-cashe - Запрет кеширования. Используется в часто обновляемых страницах и страницах с динамическим содержанием. Его дейсвтие подобно META тегу "Pragma: no-cache".
· public - Разрешение кеширования страницы как локальным клиентом, так и прокси-сервером.
· private - Разрешение кеширования только локальным клиентом.
· max-age - Разрешение использования кешированного документа в течение заданного времени в секундах.
header("Cache-control: private, max-age = 3600") /* Кеширование локальными клиентами и использование в течение 1 часа */
Expires
Устанавливает дату и время, после которого документ считается устаревшим. Дата должна указываться в следующем формате (на английском языке):
День недели (сокр.) число (2 цифры) Месяц (сокр.) год часы:минуты:секунды GMT
Например: Fri, 09 Jan 2002 12:00:00 GMT
Текущее время в этом формате возвращает функция gmdate() в следующем виде:
echo gmdate("D, d M Y H:i:s")."GMT";
Возможно использование данного HTTP заголовка для запрета кеширования. Для этого необходимо указать прошедшую дату.
Last-Modified
Указывает дату последнего изменения документа. Дата должна задаваться в том же формате, что и в случае с заголовком Expires. Данный заголовок можно не использовать для динамических страниц, так как многие серверы (например, Apache) для таких страниц сами выставляют дату модификации.
Можно сделать страницу всегда обновленной:
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
Location
Полезный заголовок, который перенаправляет браузер на указанный адрес. Его действие сравнимо с META тегом Refresh:
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=someURL">
Например, этот заголовок может быть использован так:
if ($login != $admin_login) header("Location: http://www.server.com/login.php");
else header("Location: http://www.server.com/admin.php?login=$login");
if (!headers_sent()) exit("Произошла ошибка! Пройдите <a href='http://www.server.com/login.php'>авторизацию</a> заново");
Реализация механизма cookies в PHP
Установка cookie
Реализация механизма cookies представлена единственной функцией setcookie(). Как и в случае с HTTP заголовками, эта функция должна быть вызвана до отправки каких-либо данных удаленному клиенту, не допускаются даже "пустые" символы, то есть пробел, символы перевода строки и так далее.
Функция имеет следующий синтаксис:
setcookie(имя куки, значение, срок годности, информация о пути, домен, защищенность)
Все параметры, кроме имени cookie, являются необязательными. Если cookie посылается только с этим параметром, то она сразу же уничтожается удаленным клиентом, поэтому сам по себе этот параметр не несет информационной нагрузки. Полнофункциональной cookie делают два следующих параметра: значение и время, до которого cookie может быть использовано.
Значением, которое несет cookie, может быть любая строка ASCII символов. Например, можно установить cookie с именем и фамилией посетителя, которые он до этого ввел в поле формы.
$data = $name."||".$surname;
setcookie("username", $data);
Заметьте, что отсылаемые данные должны быть оформлены в виде строки, попытка прочитать отосланный ранее массив значений ни к чему не приведёт.
Cookie, установленные в вышеуказанном примере, будут уничтожены сразу после закрытия браузера пользователем, так как по умолчанию срок жизни cookie устанавливается в ноль. Чтобы изменить этот порядок, необходимо указать третий параметр expire. Определение этого параметра можно произвести двумя способами:
· Задать отностительный срок действия с помощью функции time(), к которой прибавляется время в секундах для хранения cookie. Например, чтобы определить cookie на два часа необходимо написать:
setcookie("test 1", "это тестовая куки", time() + 3600 * 2);
· Второй способ – задание абсолютного срока истечения годности cookie. Он устанавливается с помощью функции mktime(), которая возвращает конкретную дату удаления куки. Если необходимо задать срок жизни cookie до полуночи 1 сентября 2003 года, то следует определить cookie так:
setcooikie("test 2", "куки с абсолютной датой удаления", mktime(0, 0, 0, 9, 1, 2003);
Необязательный параметр пути ограничивает область действия cookie в пределах определенных директорий. Причем в эту область входят все пути, начинающиеся со значения в этом параметре.
Например:
setcookie("test 3, "", 0, "/mus");
Мы установили cookie, пропустив параметры значения и времени и определив область действия всеми путями, начинающимися со строки "/mus", то есть сюда входят и директория "/music/", и "/museums/". Чтобы однозначно определить путь, необходимо завершить путь слешем. То есть для ограничения действия cookie каталогом "/mus", необходимо было написать в параметре "/mus/".
Следующим опциональным параметром является параметр определения действия cookie в пределах указанного домена. Причем значению этого параметра "someserver.com" соответствует только сайт с адресом http://someserver.com, а значению ".someserver.com" соответствуют уже и http://someserver.com, и http://mail.someserver.com, и http://my-someserver.com, то есть все домены, кончающиеся данной строкой.
Последний параметр функции setcookie() указывает на то, что данная cookie должна быть послана через защищённое соединение (HTTPS). Этот параметр необходим при установке cookie с конфеденциальными данными.
setcookie("my_cookie", $value, time() + 3600 * 24 * 5, "/", ".myphp.dem.ru", 1);
Чтение cookie
Обращение к данным, сохраненным в cookie, реализуется через массив $_COOKIE.
Удаление cookie
Удаление cookie производится отправкой новой cookie с именем удаляемой без каких-либо дополнительных параметров.
$data = $my_cookie;
setcookie("my_cookie");
echo "Следующие данные были удалены:<br>" . $data;
Тема 7. Принципы ООП и классы в PHP.
Перед изучением материала данной лекции настоятельно рекомендуется повторить материал курса ООП.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|