Новые книги

Автор этой книги – Марк Джеффри, старший преподаватель Kellogg School of Management, ведущей бизнес-школы США в области маркетинга.

На страницах книги он подробно объясняет, как измерить эффективность маркетинга, используя для этого всего лишь 15 показателей. На примерах из практики международных компаний он последовательно и четко описывает принципы работы с данными.

Прочитав эту книгу, вы узнаете: как использовать ключевые показатели для повышения эффективности маркетинга, с какими сложностями при анализе данных могут столкнуться маркетологи, а также как реальные компании применяют на практике описываемые методики.
Фризен Ирина Григорьевна – кандидат педагогических наук, преподаватель информационных технологий, автор многочисленных работ в сфере информационных технологий.

Настоящее учебное пособие написано в соответствии с государственной программой изучения дисциплины для средних специальных учебных заведений по специальности 230103 «Автоматизированные системы обработки информации и управления».

Офисное программирование

В пособии дается достаточный материал для проведения практических занятий по дисциплине, а также основной теоретический материал, необходимый при изучении того или иного вопроса. На основе предлагаемого материала можно строить проведение различных видов занятий.

Учебное пособие ставит перед собой цель помочь студентам изучить данную дисциплину в полном объеме, отвечающем требованиям государственного стандарта по дисциплине.

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

В учебном пособии рассматривается более 60 задач, сопровождаемых 130 рисунками и подробными объяснениями.

header

Учебник РНР
Назад Вперёд

header

(PHP 3, PHP 4)

header - отправляет "сырую" HTTP-шапку/header.

Описание

int header (string string [, bool replace])

header() используется для отправки необработанных HTTP-шапок. См. в спецификации HTTP/1.1 информацию о HTTP headers.

Необязательный параметр replace указывает, должна ли шапка замещать предыдущую аналогичную шапку, или нужно добавить вторую header того же самого типа. По умолчанию выполняется замещение, но, если вы передаёте FALSE в качестве второго аргумента, вы можете форсировать создание нескольких headers одного типа. Например:

header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM',false);

Здесь два особых вызова шапок. В первом это header, начинающийся строкой "HTTP/" (регистр не имеет значения), используемый для создания HTTP статус-кода для отправки. Например, если вы сконфигурировали Apache для использования PHP-скрипта для обработки запросов отсутствующих файлов (используя директиву ErrorDocument), вам потребуется удостовериться, что ваш скрипт генерирует соответствующий статус-код.

<?php
header("HTTP/1.0 404 Not Found");
?>

Примечание: строка шапки HTTP-статуса всегда будет отправляться первой клиенту, независимо от того, идёт вызов header() первым или нет. Этот статус может быть переопределён вызовом header() с новой строкой статуса в любое время, если только HTTP headers уже не отправлены.

Примечание: в PHP 3 это работает только в том случае, если PHP скомпилирован как Apache-модуль. Вы может добиться того же эффекта, используя шапку Status.

header("Status: 404 Not Found");

Второй особый случай это "Location:" header. Здесь header не только отсылается обратно браузеру, но также возвращается статус-код REDIRECT (302), если только какой-нибудь 3xx статус-код не был уже установлен.

header("Location: http://www.example.com/"); /* Redirect browser */
exit;                 /* Убедитесь, что последующий код не
                         выполняется, когда мы перенаправляем. */

Примечание: HTTP/1.1 требует абсолютного URI в качестве аргумента для Location: включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI. Как правило вы можете сами использовать $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] и dirname() для создания абсолютного URI из относительного:

header("Location: http://".$_SERVER['HTTP_HOST']
                      .dirname($_SERVER['PHP_SELF'])
                      ."/".$relative_url);

PHP-скрипты часто генерируют динамическое содержимое, которое обязано не кэшироваться клиентским браузером или proxy-кэшами между клиентским браузером и сервером. Во многих прокси и клиентах можно отключать кэширование.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // дата в прошлом
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
                                                     // всегда модифицируется
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          // HTTP/1.0

Примечание: вы можете обнаружить, что ваши страницы не кэшируются, даже если вы не выводите все выше указанные шапки. Есть опции, которые могут быть установлены пользователями в своих браузерах, изменяющие поведение по умолчанию кэширования. Отправляя вышеуказанные шапки, вы должны переопределить любые установки, которые иначе могут кэшировать ваши скрипты.

Кроме того, session_cache_limiter() и установка конфигурации session.cache_limiter могут использоваться для автоматической генерации корректны шапок кэширования, когда используются сессии.

Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле, или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании единого PHP/HTML-файла.

<?php header ("Content-type: audio/x-pn-realaudio"); ?>
// нарушение: обратите внимание на пустую строчку вверху

Примечание: в PHP 4 вы можете использовать буферизацию вывода для решения этой проблемы, передавая браузеру весь ваш вывод, буферизуемый на сервере до отправки. Вы можете сделать это вызовом ob_start() и ob_end_flush() в вашем скрипте, или установив директиву конфигурации output_buffering в файле php.ini или файлах конфигурации сервера.

Если вы хотите, чтобы пользователю задавался вопрос о сохранении данных, высылаемых вами, таких как сгенерированный PDF-файл, вы можете использовать шапку Content-Disposition для предоставления рекомендуемого файла и форсировать отображение браузером диалога save.

<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... вывод pdf-файла ... */

Примечание: в Microsoft Internet Explorer 4.01 имеется баг, не дающий реализовать это. Средства от этого нет. Также имеется баг в Microsoft Internet Explorer 5.5, но его можно исправить, обновив до Service Pack 2 или новее.

Примечание: если safe mode включён, uid скрипта добавляется к части realm шапки WWW-Authenticate, если вы устанавливаете эту шапку (используется для HTTP Authentication).

См. также headers_sent(), setcookie() и раздел HTTP-аутентификация.


Назад Оглавление Вперёд
Функции HTTP Вверхheaders_sent