|
|||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
PHP (33) - HTTP hlavičkyPHP a HTTP protokol - jelikož PHP slouží převážně k výrobě internetových stránek, není vůbec špatné vědět, jak funguje jejich přenos a jaké triky nám jazyk nabízí v této oblasti.
Hlavičky požadavkuAby se ve světě internetu udržel nějaký pořádek, musí existovat
určitá pravidla hry. Tak například webové servery musejí "rozumět"
tomu, na co se jich ptáme. Aby to dovedly, existuje protokol, který se
jmenuje HTTP. Každý prohlížeč musí umět sestavit takzvaný http požadavek a musí být schopen
porozuměnt http odpovědi.
(Každý server zase musí rozumět požadavku a musí být schopen sestavit
podle něj odpověď.) V
praxi to velice zhruba řečeno funguje tak, že jak požadavky, tak
odpovědi mají svůj formát a ten by se měl ctít a dodržovat. Požadavek se skládá mimo jiné z hlaviček. Ty mohou obsahovat některé důležité věci o tazateli (tedy prohlížeči) nebo o jeho prostředí. PHP umí zjistit, jaké hlavičky byly v požadavku, a umí je zobrazit. Slouží k tomu příkaz getallheaders a funguje to následujícím způsobem: <?
Jelikož má generování hlaviček na starosti prohlížeč, bude
pravděpodobně výstup skriptu pro každý prohlížeč jiný. Hlavičky
požadavku nemají až tak velký význam, ale mohou být užitečné pro
statistiky a podobně. (Často z nich jde vyvěštit, jaký prohlížeč jsme
pro zobrazení stránky použili). Hlavičky odpovědiU odpovědí je situace veselejší. Tu sestavujeme sami a můžeme na to
využít PHP. Odpověď webového serveru má dvě části:
Hlavička se do odpovědi propašuje pomocí PHP funkce header. My už
jsme se s touto funkcí v seriálu setkali na dvou místech. V díle o příkladech
na formuláře jsme využili hlavičku Location a v díle o
uploadu a downloadu souborů jsme využili dokonce tři hlavičky,
content-description, content-type a content-disposition. Teď si v tom
uděláme trochu jasno. Z čistě praktického hlediska není přidání
hlavičky k odpovědi nic jiného, než způsob, jak něco vzkázat
prohlížeči. Hlavičky jsou normalizované,
hotové peklo však může nastat při zjišťování, zda nám cílový prohlížeč
opravdu porozuměl a zda udělal to, co chceme. Co se týče PHP, musí být všechna volání funkce header provedena
dříve, než se odešle jakýkoli výstup do prohlížeče. Poměrně častá chyba
vznikne tehdy, když máme projekt uložený ve více souborech a ty
spojujeme pomocí require nebo include. I jedna nevinná mezera na konci
includovaného souboru totiž způsobí, že se volání funkce header
nepovede - a chybu možná budeme dlouho hledat. Pozn.: To, co jsem řekl o
hlavičkách berte jako nástin problematiky. Opravdoví znalci HTTP možná
poukáží na to, že existují různé verze protokolu, že v každé verzi
přibyly nebo ubyly určité hlavičky, že některé hlavičky začaly být od
jisté verze HTTP povinné a podobně. Můžete se realizovat v
diskusi. Hlavičky v praxiV praxi existuje jen několik
hlaviček, které stojí za to si zapamatovat v souvislosti s PHP. Ukažme
si je: Location <?
budete místo jejího načtení přesměrováni na startovní stránku
Linuxsoftu přesto (nebo možná právě proto ;-) ) že je skript naprosto v
pořádku. Zbytek skriptu se zkrátka neprovede. Content-disposition <?
Cache-control <?
Pozn.: Kéžby to fungovalo vždy. Některé proxy servery bývají napsány tak, že je skoro nemožné je obejít, jiné je potřeba správně nastavit, další mají v rukou lidé, které nemůžete ovlivnit. Většinou to ale dopadne dobře a použití těchto hlaviček způsobí načtení stránky ze serveru, ne z cache proxy.
WWW-Authenticate <?
Hlavičky nejsou samospásné. Prohlížeče některým nerozumí, jiné se
používají nenormalizovaně, další pozmění nebo nepochopí na cestě
číhající proxy server, prostě bývá s nimi zábava. Ty, které jsem uvedl
výše by v naprosté většině případů měly fungovat správně. Příště se v našem seriálu přehoupneme do oblasti, na kterou se již všichni těší - bude řeč o databázích.
Related article
PHP (1) - Historie a budoucnost PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Byte order mark a PHP Previous Show category (serial) Next
|
Szukanie oprogramowania
|
|||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |