Przykłady użycia funkcji header() w PHP: Różnice pomiędzy wersjami

Z Podręcznik Administratora by OPZ SGU
Przejdź do nawigacji Przejdź do wyszukiwania
Linia 69: Linia 69:
Ochrona serwera, ukrywanie prawdziwej nazwy i wersji usługi.
Ochrona serwera, ukrywanie prawdziwej nazwy i wersji usługi.
 
 
// content language (en = English)
 
header('Content-language: en');
Wysłanie informacji o języku strony:
header('Content-language: pl');
 
 
// last modified (good for caching)
 
Informacja o ostatniej modyfikacji pliku
 
$time = time() - 60; // or filemtime($fn), etc
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
Zastosowanie
Cachowanie
 
 
// header for telling the browser that the content
 
// did not get changed
Informacja o braku zmian w pliku
header('HTTP/1.1 304 Not Modified');
header('HTTP/1.1 304 Not Modified');
 
 
// set content length (good for caching):
Zastosowanie
Cachowanie 
 
 
Informacja o rozmiarze pliku
header('Content-Length: 1234');
header('Content-Length: 1234');
 
 
// Headers for an download:
Zastosowanie
Cachowanie, obliczanie w przeglądarce % pobierania pliku.
 
 
Nagłówki służące pobieraniu plików
 
header('Content-Type: application/octet-stream');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');  
header('Content-Disposition: attachment; filename="example.zip"');  
Linia 89: Linia 104:
// load the file to send:
// load the file to send:
readfile('example.zip');
readfile('example.zip');
 
 
// Disable caching of the current document:
Zastosowanie
Pobieranie plików statycznych lub dynamicznych.
Zapobiega wyświetlaniu treści w przeglądarce. 
 
 
Wyłączenie cachowania pliku
 
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');
header('Pragma: no-cache');
Zastosowanie:
Blokada cachowania...
 
 
// set content type:
 
Ustawienie typu pliku
 
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/html; charset=utf-8');
Linia 103: Linia 129:
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation
header('Content-Type: application/x-shockwave-flash'); // animacja flasz
 
Zastosowanie
Dynamiczne wysyłanie do przeglądarki treści generowanych przez PHP
 
 
// show sign in box
 
Wyświetlanie okna logowania HTTP
 
header('HTTP/1.1 401 Unauthorized');
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';
print 'enters wrong login data';
Zastosowanie
System autoryzacji

Wersja z 03:13, 18 lut 2010

Funkcja header() służąca wysyłaniu nagłówków serwera z poziomu PHP może być wykorzystywana do wielu celów. Większość osób korzysta z niej w celu przekierowania użytkownika z jednej strony na druga, jednak liczba zastosowań jest o wiele większa.


Wysłanie nagłówka 200 - strona wysłana poprawnie

header('HTTP/1.1 200 OK');

Zastosowanie W wypadku jeżeli praktycznie otrzymamy stronę 404 możemy łatwo oszukać użytkownika lub boty indeksujące wysyłając powyższy nagłówek oraz generując treść przyjazną dla człowieka zawierającą aktualne informacje.  

Wysłanie nagłówka 404 - brak żądanego pliku header('HTTP/1.1 404 Not Found');

Zastosowanie Może służyć w celu oszukania użytkownika który próbuje uzyskać dostęp do niedozwolonych zasobów. Wszak 404 brzmi mniej kusząco niż dostęp zabroniony :)  

Wysłanie nagłówka 404 - brak dostępu header('HTTP/1.1 403 Forbidden');

Zastosowanie Może służyć w celu oznaczania zasobów do których dostęp powinien mieć tylko zalogowany użytkownik.

  Wysłanie nagłówka 301 - plik przeniesiony header('HTTP/1.1 301 Moved Permanently');

Zastosowanie Wszędzie tam gdzie wykonujemy przekierowania. Jeżeli bot indeksujący napotka na 301 usunie on ze swojego indeksu aktualny link i zapamięta nowy!.   Wysłanie nagłówka 500 - błąd konfiguracji serwera header('HTTP/1.1 500 Internal Server Error');

Zastosowanie Jeżeli napotkamy na poważny błąd w trakcie wykonywania skryptu możemy ładnie wypluć interialkę :)

  Przekierowanie użytkownika pod dowolny adres

header('Location: http://www.example.org/');

Zastosowanie System logowania 

Opóźnione przekierowanie użytkownika pod dowolny adres

header('Refresh: 10; url=http://www.example.org/'); print 'Zostaniesz przekierowany na stronę xxx w ciągu 10 sekund';

Zastosowanie Linki wychodzące, w ciągu 10 sekund możemy wyświetlić informację "Opuszczasz nasz serwis... nie odpowiadamy za treść która znajduje się pod adresem xxx"

Przekierowanie HTML (to samo co wyżej tylko w wersji HTML)

<meta http-equiv="refresh" content="10;http://www.example.org/ />

 

Nadpisanie zawartość "Powered by".

header('X-Powered-By: PHP/4.4.0'); header('X-Powered-By: Brain/0.6b');

Zastosowanie Ochrona serwera, ukrywanie prawdziwej nazwy i wersji usługi.  

Wysłanie informacji o języku strony: header('Content-language: pl');  

Informacja o ostatniej modyfikacji pliku

$time = time() - 60; // or filemtime($fn), etc header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');

Zastosowanie Cachowanie  

Informacja o braku zmian w pliku header('HTTP/1.1 304 Not Modified');

Zastosowanie Cachowanie 


Informacja o rozmiarze pliku header('Content-Length: 1234');   Zastosowanie Cachowanie, obliczanie w przeglądarce % pobierania pliku.


Nagłówki służące pobieraniu plików

header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); // load the file to send: readfile('example.zip');

Zastosowanie Pobieranie plików statycznych lub dynamicznych. Zapobiega wyświetlaniu treści w przeglądarce. 


Wyłączenie cachowania pliku

header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Pragma: no-cache');

Zastosowanie: Blokada cachowania...  

Ustawienie typu pliku

header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); // plain text file header('Content-Type: image/jpeg'); // JPG picture header('Content-Type: application/zip'); // ZIP file header('Content-Type: application/pdf'); // PDF file header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file header('Content-Type: application/x-shockwave-flash'); // animacja flasz

Zastosowanie Dynamiczne wysyłanie do przeglądarki treści generowanych przez PHP  

Wyświetlanie okna logowania HTTP

header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"'); print 'Text that will be displayed if the user hits cancel or '; print 'enters wrong login data';

Zastosowanie System autoryzacji