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
 
(Nie pokazano 15 wersji utworzonych przez 11 użytkowników)
Linia 1: Linia 1:
Funkcja header() służąca wysyłaniu nagłówków serwera z poziomu PHP może być wykorzystywana do wielu celów.
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.
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


== Wysłanie nagłówka 200 - strona wysłana poprawnie ==
<pre>
header('HTTP/1.1 200 OK');
header('HTTP/1.1 200 OK');
</pre>


Zastosowanie
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.
 
*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
 
== Wysłanie nagłówka 404 - brak żądanego pliku ==
 
<pre>
header('HTTP/1.1 404 Not Found');
header('HTTP/1.1 404 Not Found');
</pre>


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


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


Zastosowanie
*Może służyć w celu oznaczania zasobów do których dostęp powinien mieć tylko zalogowany użytkownik.
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
 
== Wysłanie nagłówka 301 - plik przeniesiony ==
 
<pre>
header('HTTP/1.1 301 Moved Permanently');
header('HTTP/1.1 301 Moved Permanently');
</pre>


Zastosowanie
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!.  
*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
 
== Wysłanie nagłówka 500 - błąd konfiguracji serwera ==
 
 
<pre>
header('HTTP/1.1 500 Internal Server Error');
header('HTTP/1.1 500 Internal Server Error');
 
</pre>
Zastosowanie
Zastosowanie
Jeżeli napotkamy na poważny błąd w trakcie wykonywania skryptu możemy ładnie wypluć interialkę :)
*Jeżeli napotkamy na poważny błąd w trakcie wykonywania skryptu możemy ładnie wypluć interialkę :)


 
 
Przekierowanie użytkownika pod dowolny adres


== Przekierowanie użytkownika pod dowolny adres ==
<pre>
header('Location: http://www.example.org/');
header('Location: http://www.example.org/');
</pre>
Zastosowanie
*System logowania 


Zastosowanie
== Opóźnione przekierowanie użytkownika pod dowolny adres ==
System logowania 


Opóźnione przekierowanie użytkownika pod dowolny adres


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


Zastosowanie
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"
*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)


== Przekierowanie HTML (to samo co wyżej tylko w wersji HTML) ==
<pre>
  <meta http-equiv="refresh" content="10;http://www.example.org/ />
  <meta http-equiv="refresh" content="10;http://www.example.org/ />
 
 </pre>
 


Nadpisanie zawartość "Powered by".
== Nadpisanie zawartość "Powered by". ==


<pre>
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');
header('X-Powered-By: Brain/0.6b');
 
</pre>
Zastosowanie
Zastosowanie
Ochrona serwera, ukrywanie prawdziwej nazwy i wersji usługi.
*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
== Wysłanie informacji o języku strony: ==
 
<pre>header('Content-language: pl');
 </pre>
 
 
== Informacja o ostatniej modyfikacji pliku ==
 


<pre>
$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');
</pre>


Zastosowanie
Zastosowanie
Cachowanie
*Cachowanie
 
 


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


Zastosowanie
Zastosowanie
Cachowanie 
*Cachowanie 
 




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


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


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


<pre>
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 104: Linia 154:
// load the file to send:
// load the file to send:
readfile('example.zip');
readfile('example.zip');
</pre>


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




Wyłączenie cachowania pliku


== Wyłączenie cachowania pliku ==
<pre>
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');
 
</pre>
Zastosowanie:
Zastosowanie:
Blokada cachowania...
*Blokada cachowania...
 
 


Ustawienie typu pliku


== Ustawienie typu pliku ==
<pre>
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 130: Linia 185:
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'); // animacja flasz
header('Content-Type: application/x-shockwave-flash'); // animacja flasz
 
</pre>
Zastosowanie
Zastosowanie
Dynamiczne wysyłanie do przeglądarki treści generowanych przez PHP
*Dynamiczne wysyłanie do przeglądarki treści generowanych przez PHP
 
 


Wyświetlanie okna logowania HTTP


== Wyświetlanie okna logowania HTTP ==
<pre>
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';
</pre>


Zastosowanie
Zastosowanie
System autoryzacji
*System autoryzacji
 
 
 
[[Category:PHP]]

Aktualna wersja na dzień 01:37, 11 mar 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