Hlavičky (headers) v PHP

9. srpna 2001

Hlavičky, teda headers v PHP sú užitočný pomocníci. Uľahčujú život nielen užívateľovi, ale aj serveru. Môžeme si z nich zistiť napr. z akej URL užívateľ prišiel, zistiť verziu servera, prehliadača a podľa toho sa prispôsobiť, alebo aj získať štatistické údaje. V tomto článku vám vysvetlím ich použitie, vymenujem 16 najhlavnejších a ukážem, ako ich zapisovať…

Úvod do hlavičiek

Hlavičky spadajú pod protokol HTTP. Niektoré nie sú definované v starších verziách HTTP, ale v HTTP 1.1 už sú všetky známe. Hlavička je vlastne doplnkom (výtvorom) každej odpovede/požiadavku. Zakaždým keď klient alebo server odpoveď/požiadavok zašlú, sú k nej pripojené aj hlavičky s obsahom, ktorý je pre každú odpoveď/požiadavok špecifický. Tým pádom ich môžeme využiť pre každý dokument špecificky/odlišne. Dokumenty v PHP s definovanými hlavičkami, napr. Accept, Accept charset atď., výrazne uľahčujú život serveru. S hlavičkami môžeme pracovať dvoma spôsobmi. Môžeme ich generovať a posielať spolu so skriptom, alebo čítať tie, čo zaslal prehliadač.

Čítanie hlavičiek

Čítať ich môžeme v PHP (ako inak) veľmi jednoducho. Sú totižto uložené v premenných, s ktorými môžeme ďaľej pracovať. Tak napr. hlavička Referer bude prístupná v premennej $HTTP_REFERER, hlavička User-Agent bude prístupná v premennej $HTTP_USER_AGENT. Ako vidíte, vlastne pred názov Hlavičky pripájame $HTTP_ a nahrádzame znaky – podtržítkom _. Ďaľším spôsobom je zistenie všetkých hlavičiek funkciou GetAllHeaders(), ktorá vracia asociatívne pole so všetkými hlavičkami. Funguje však len pod Apachom.

$headers = GetAllHeaders();
while (list($hlavicka, $obsah) = each($headers)):
echo "$hlavicka – $obsah<br>";
endwhile;

Generovanie hlavičiek

Generovať hlavičky musíme ešte pred zaslaním hocijakého textového výstupu do prehliadača. Používame pri tom funkciu Header(). Ako parametre funkcie uvedieme zápis hlavičky, ktorý môžete vidieť nižšie. Teda napr. Header("Location: http://www.interval.cz/index.asp");.

A teraz k tabuľke

hlavičky označené * (hviezdičkou) sú dostupné len v HTTP/1.1 protokole. Zápis môžete vložiť priamo ako parameter do funkcie Header(). Sú pri nich pripísané aj najčastejšie používané hodnoty hlavičiek. Tie sa môžu podľa potreby meniť.

Názov Popis Zápis
Cache-Control * Pomocou tejto hlavičky môžeme prikázať cache-pamäti a proxy-serverom, aby konkrétny dokument neukladali do vyrovnávacej pamäte. Cache-Control: no-cache
Connection * Táto hlavička dokáže uzavrieť spojenie, ak sa pošle ako obsah hlavičky close. Connection: close
Pragma Pomocou tejto hlavičky možeme, ako pri hlavičke Cache-Control, prikázať proxy serverom a cache pamätiam, aby dokument neukladali do cache-pamäte Pragma: no-cache
Accept * Táto hlavička obsahuje informácie o typoch dát podporovaných klientom. Pri každom type môžeme ešte určiť akceptovateľnosť parametrom q, od nuly do jedna. Napr q=0.5 je lepšie ako q=0.2. Accept: text/html, image/gif; q=0.4, image/png; q=0.2
Accept-Charset * Pomocou tejto hlavičky môžeme určiť, ktoré znakové sady podporuje náš prehliadač, ktoré chceme vidieť. Táto hlavička sa odosiela tiež s parametrom q, ktorý obsahuje akceptovateľnosť, či obľúbenosť konkrétnej znakovej sady. Accept-Charset: windows-1250; q=0.7, us-ascii; q=0.3
Accept-Language * Touto hlavičkou môžeme "zdeliť" serveru, aký jazyk preferujeme. Accept-Language: cs, en; q=0.4
From Hlavička obsahujúca elektronickú adresu užívateľa, nie je už dnes podporovaná väčšinou prehliadačov, kvôli ochrane údajov. $HTTP_FROM;
Host Táto hlavička obsahuje doménovú adresu užívateľa. $HTTP_HOST;
If-Modified-Since Túto hlavičku odosielame, ak chceme dokument dostať, iba ak bol od daného dátumu zmenený. If-Modified-Since: Fri, 22 Jun 2001 17:04:05 GMT
Referer Táto hlavička obsahuje url stránky, odkiaľ užívateľ prišiel, teda referera. Veľmi užitočná a obľúbená hlavička. $HTTP_REFERER;
User-Agent User-Agent posiela identifikáciu prehliadača, teda svoje meno, číslo verzie, a platformu, na ktorej je spustený. User-Agent: Mozilla/4.0 (compatible; MSIE 5.01, Windows NT)
Location V tejto hlavičke server odosiela url dokumentu, ktorý bol presunutý. Taktiež ňou môžeme užívateľa automaticky presmerovať. URL v hlavičke Location musí byť absolútne, teda musí začínať na http:// Location: http://www.interval.cz/
Server V tejto hlavičke posiela server svoju identifikáciu, teda meno a číslo verzie. Server: Apache/1.4b2
Content-Type Hlavička obsahuje typ dát. Pre každý typ dát máme presný zápis. Teda napr. text/html – pre HTML, pre obyčajný text text/plain, pre obrázok Gif image/gif, atď. Content-Type: text/html
Expires V tejto hlavičke určujeme, po aký čas bude odpoveď platná. Ak uvedieme ako parametre aktuálny čas, dokument sa nebude ukladať do cache pamäte. Expires: Fri, 22 Jun 2001 17:18:17 GMT
Last-Modified Táto hlavička obsahuje dátum poslednej modifikácie dokumentu poslaného ako odpoveď. $HTTP_LAST_MODIFIED

Jeden menší príklad: ak chceme, aby sa náš dokument neukladal do cache pamäte, na začiatku skriptu, pred textovým výstupom, napíšeme nasledovné: Header("Pragma: no-cache"), resp: Header("Cache-control: no-cache"), alebo uložíme do hlavičky Expires aktuálny čas Header("Expires: ".GMDate("D, d m Y H:i:s")." GMT").

Hlavičiek je ešte niekoľko, ale tie horeuvedené, s najčastejšou formou zápisu by mali stačiť.

Záverom

Hlavičky sú naozaj dobrí pomocníci. Snažte sa ich využívať a tým sa prispôsobovať vašim návštevníkom, možnostiam servera, nenechajte server rozmýšlať akú má dať znakovú sadu, jazyk atď. Uľahčíte tým život sebe, návštevníkom a aj adminovi serveru.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *