Hlavičky (headers) v PHP
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.
|
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
-
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Co je to DNSSEC, jak funguje a jak si ho nastavit?
14. srpna 2024 -
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Co je to VRAM a jak ji navýšit bez drahého upgradu?
20. srpna 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024