Rychlá pomoc - HTTP hlavičky v PHP

Co a jak nastavit do funkce header, aby se stalo to a to?

Tento článek je zejména rychlým návodem pro vlastní potřebu. Na úvod ještě připomenu, že hlavičky je nutno posílat před tím, než se začne cokoliv vypisovat. Ale na to byste, díky/kvůli warningu přišli jistě sami :)

Přesměrování

Skvělý a podrobný článek o přesměrování s 3XX kódy pod HTTP na La Trine

// Přesměruje na http://example.com
// mělo by se uvádět kompletní absolutní URL.
header('Location: http://example.com');

Kódování a práce s obsahem

// Nastaví typ dokumentu na plaintext a kódování na utf-8
header('Content-type: text/plain; charset=utf-8');
// Nastaví odpověď tak, aby prohlížeč nechal obsah odpovědi stahnout místo zobrazení
// Při posílání netextových dat je lepší nastavit Content-type např. na application/octet-stream
header('Content-disposition: attachment; filename=file.txt');

Cache ap.

Následující příklad by měl browsery, které se chovají podle specifikace, donutit danou stránku nikdy necachovat.
Více o Cache-Control

// datum, kdy vyprší platnost stránky (dojde k zneplatnění cache). Ve formátu podle RFC 2822
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
// datum poslední modifikace souboru. Porovnává se s datem prohlížečové cache a životností cache.
header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT');
// vlastnosti cache. Neukládat, necachovat, vždy znovu načíst ze serveru.
header('Cache-Control: no-store, no-cache, must-revalidate');
// vlastnosti cache. Příznak false ve funkci header znamená, že se má
// obsah přidat ke stávající hlavičce Cache-Control, místo přepsání (defaultní chování)
header('Cache-Control: post-check=0, pre-check=0', false);
// Necachovat. Hlavičky Pragma jsou pozůstatkem ze specifikace HTTP 1.0
// a pro klienty nejsou povinné. Proto se také už neplánuje zavedení jejich nových hodnot.
header('Pragma: no-cache');

Návratový kód serveru

Při použití „custom 404 message“ (např. při obcházení mod_rewrite) je třeba potlačit defaultní zprávu serveru o tom, že došlo k chybě 404. K tomu slouží jméno protokou spolu s číslem a jménem odpovědi. Zrovna tak se dá server „přesvědčit“ k zaslání stavu 404, pokud používáme nějaký framework a všechny requesty (ať už existující, nebo ne) přesměrováváme do bootstrapu.

Seznam návratových kódů s odpovídajícími významy

// Nastaví 200 OK
header('HTTP/1.1 200 OK');
// Vzápětí ho přepíše na 404 Not Found
header('HTTP/1.1 404 Not Found');
// Obdobně funguje i pro ostatní návratové kódy

Na víc možností, které by se v PHP mohly hodit si nevzpomínám. Pokud si vzpomenu, doplním. Pokud na ně přijdete vy, jsou vítány v komentářích. Budiž vám k tomu nápomocna syntax Texy pro php kód.

Computer$, (Web)design

Komentáře

Radas

15. 5. 2009, 13.51

typek blog


Vložit komentář

K tomuto příspěvku není povoleno přidávat komentáře.