ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


headerPodręcznik PHPPoprzedniNastępnyheader (PHP 3, PHP 4 >= 4.0.0)header -- Wysyła surowy nagłowek HTTPOpisint header (string treść_nagłówka [, bool zamień]) header() służy do wysłania surowego
nagłówka HTTP.
Zajrzyj do Specyfikacji HTTP 1.1
aby dowiedzieć się więcej na temat nagłówków HTTP.
Opcjonalny agrument zamień określa, czy funkcja
ma zastąpić nagłówek tego samego typu przygotowany przez serwer,
czy dodać jeszcze jeden. Domyślnie, oryginalny
nagłówek zostanie zastąpiony, ale jeśli ustawisz ten argument na FALSE,
to nowy nagłówek zostanie dodany do już istniejących. Na przykład:
header('WWW-Authenticate: Negociate');
header('WWW-Authenticate: NTLM',false);
W PHP są dwa specjalne wywołania header().
Pierwszym z nich jest "Location". To wywołanie nie tylko
wysyła ten nagłówek do przeglądarki, ale także wysyła do przeglądarki
status przekierowania REDIRECT (302).
header("Location: http://www.php.net/"); /* Przekieruj przeglądarkę
na stronę główną PHP */
exit; /* Upewnij się, że kod poniżej nie zostanie wykonany
po przekierowaniu. */
Notatka:
Protokół HTTP 1.1 wymaga bezwzględnego URI w nagłówku
Location:
włącznie z określeniem protokołu, nazwy hosta i bezwzględnej scieżki
dostępu, ale niektóre klienty akceptują względne URI.
Zwykle używa się
$HTTP_SERVER_VARS['HTTP_HOST'], $HTTP_SERVER_VARS['PHP_SELF'] i
funkcji dirname() by wygenerować bezwględnego
URI:
header("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
."/".$relative_url);
Drugim specjalnym wywołaniem funkcji jest każdy nagłówek zaczynający się
od ciągu znaków "HTTP/" (wielkość liter nie
gra roli), którego używa się do określenia, jaki kod statusu HTTP ma zostać
wysłany.
Na przykład, jeśli skonfigurowałeś Apache'a tak, że skrypt PHP obsługuje
zapytania do nieistniejących plików (za pomocą dyrektywy
ErrorDocument), powinieneś zwrócić uwagę, aby skrypt
generował właściwy kod statusu zapytania HTTP.
header("HTTP/1.0 404 Not Found");
Notatka:
W PHP 3 działa to tylko wtedy, kiedy PHP jest skompilowane jako moduł
serwera Apache. Taki sam efekt można osiągnąć za pomocą nagłówka
Status.
header("Status: 404 Not Found");
Skrypty PHP często służą do generowania dynamiczej treści, która
nie może być buforowana przez klienta czy serwer proxy. Pamięć cache
(bufor) w większości tych urządzeń da się wyłączyć dzięki:
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // data w przeszłości
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// ciągle modyfikowany
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
Notatka:
Możesz zaobserwować, że strony nie są buforowane, nawet jeśli
nie użyłeś wszystkich ww. nagłówków. Jest wiele sposobów, w jakie
użytkownicy mogą skonfigurować swoje przeglądarki, aby zmienić
standardowy sposób buforowania. Przez wysłanie powyższych nagłówków,
powinno się udać ominąć jakiekolwiek ustawienia pozwalające
na zbuforowanie wyniku pracy twojego skryptu.
Dodatkowo, session_cache_limiter() i dyrektywa
konfiguracyjna session.cache_limiter służą
do automatycznego generowania nagłówków związanych z bufurowaniem,
kiedy sesje są w użyciu.

Pamiętaj, że header() może być wywoływana
jedynie do momentu nim zostanie wysłana jakakolwiek treść, tzn.
znaczniki HTML, puste linie lub wynik pracy PHP. Jest to bardzo
częsty błąd, gdzie skrypty z funkcjami include(),
require() itp. mają spacje albo puste linie przed
wywołaniem funkcji header().
Problem ten pojawia się również w skryptach opartych na
pojedynczym pliku PHP/HTML.
<?php require("user_logging.inc") ?>


<?php header ("Content-Type: audio/x-pn-realaudio"); ?>
// skrypt nie działa - zauważ puste linie pomiędzy instrukcjami
Notatka:
W PHP 4 można użyć buforowania wyjścia aby ominąć ten problem.
Wszystko, co skrypt wyśle do przeglądarki zostanie zatrzymane na
serwerze do momentu, kiedy pojawi się instrukcja wysłania danych.
Można to zrobić za pomocą funkcji ob_start() i
ob_end_flush(), lub ustawiając dyrektywę kofiguracyjną
output_buffering w pliku php.ini
lub w plikach konfiguracyjnych serwera.

Aby użytkownik został monitowany o zapisanie wysyłanych danych,
takich jak np. wygenerowany plik PDF, można użyć nagłówka Content-Disposition aby podać zalecaną nazwę
pliku i zmusić przeglądarkę do wyświetlenia okienka Zapisz jako.
<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... treść pliku pdf ... */
Notatka:
W Microsoft Internet Explorer 4.01 jest błąd, który uniemożliwia
wykorzystanie tego mechanizmu. Nie ma na to rozwiązania. Błąd, który
zahacza o ten mechanizm, jest także w Microsoft Internet Explorer 5.5,
jednak da się go ominąć aktualizując przeglądarkę poprzez Service Pack 2
lub późniejszy.

Zobacz też headers_sent(),
setcookie(), i rozdział
Autoryzacja HTTP.
PoprzedniSpis treściNastępnyFunkcje obsługi HTTPPoczątek rozdziałuheaders_sent
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •