Сделай Сам Свою Работу на 5

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 Все материалы защищены законодательством РФ.