PHP podruhé, začínáme s HTTP

V minulém dílu jsme skončili u spolupráce PHP s formuláři. Nyní se na chvíli zastavíme u využití PHP při tvorbě a...


V minulém dílu jsme skončili u spolupráce PHP s formuláři. Nyní se na chvíli
zastavíme u využití PHP při tvorbě aplikací a poté se podíváme na základy
protokolu HTTP a na vlastnosti jeho jednotlivých verzí.
Užitečná aplikace
Funkci Date() můžeme s výhodou použít pro vypsání aktuálního data a času
serveru do stránky tak, jak to dělá mnoho zpravodajských serverů. My si
ukážeme, jak tohoto efektu dosáhnout pomocí PHP. Pro náš skript bude především
důležitá znalost významu jednotlivých znaků ve formátovacím řetězci funkce
Date(). Potřebné informace nalezneme v tabulce 1.
Vidíme, že v tabulce nám schází česká jména měsíců a dnů v týdnu. To však
můžeme obejít. Pro dny v týdnu vytvoříme asociativní pole, které poslouží k
převodu anglických zkratek dne na český název. Asociativní pole je pole, kde se
jako index používá znakový řetězec. Pro měsíce můžeme vytvořit normální pole,
protože funkce Date() vrací přímo pořadové číslo měsíce.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Zpravodajství</TITLE>
</HEAD>
<BODY>
<H1 ALIGN=CENTER>Vítejte na našem zpravodajském serveru</H1>
<P ALIGN=CENTER>
<FONT SIZE=5 COLOR=RED>
<? $dny["Mon"] = "Pondělí"; $dny["Tue"] = "Úterý"; $dny["Wed"] = "Středa";
$dny["Thu"] = "Čtvrtek"; $dny["Fri"] = "Pátek"; $dny["Sat"] = "Sobota";
$dny["Sun"] = "Neděle"; $mesice = array(1=>"ledna", "února", "března", "dubna",
"května", "června", "července", "srpna", "září", "října", "listopadu",
"prosince"); $dnes = $dny[Date("D")] . Date(" d. ") . $mesice[(int)Date("m")] .
Date(" Y H:i:s"); echo $dnes;
?>
</FONT>
</BODY>
</HTML>
Výsledný zápis data skládáme z jednotlivých částí do proměnné $dnes. Pro
spojování řetězců musíme použít operátor "." a ne obvyklé "+". Obyčejné znaky
použité ve formátovacím řetězci funkce Date() se vrátí společně s výsledkem.
Toho využíváme pro doplnění mezer a teček na správná místa.
Protože funkce Date() vrací jako výsledek řetězec, musíme v případě převodu
čísla měsíce na jméno přetypovat výsledek na číselnou hodnotu pomocí předřazení
(int).
Máme my to ale v srdci Evropy trápení. Pro angličtinu by stačil celý skript
zkrátit na jeden příkaz echo Date("l F d, Y H:i:s"). Pokochejme se však
výsledkem našeho skriptu na obrázku 1.
Tím naši krátkou exkurzi do světa PHP ukončíme. Ještě se však v našem seriálu k
němu vrátíme a ukážeme si jeho další možnosti včetně spolupráce s databázemi.
Základy protokolu HTTP
Služba World Wide Web je postavena na třech základních technologiích HTML, URL
a HTTP. HTML je značkovací jazyk, který slouží k standardnímu popisu obsahu a
struktury webovských stránek. URL je speciální druh adres používaných na Webu
každá webovská stránka má svoji jednoznačnou adresu právě v podobě URL. HTTP
Hypertext Transfer Protocol je protokol používaný při komunikaci mezi
prohlížeči a webovými servery. Pomocí tohoto protokolu se k serveru přenáší URL
stránky, kterou uživatel (přes svůj prohlížeč) požaduje, a naopak server pomocí
protokolu HTTP odesílá uživateli zpět stránku zapsanou v HTML.
Pro správné pochopení principů CGI skriptů je nezbytná alespoň základní znalost
protokolu HTTP. Proto se v dnešním pokračování seriálu podíváme na základní
vlastnosti protokolu HTTP.
Protokol HTTP vychází z architektury klient/server. Klient v našem případě
prohlížeč se spojí se serverem a pošle mu požadavek. Server jako reakci na
klientův požadavek zasílá odpověď. Přesný formát požadavku a odpovědi je
definován ve specifikaci protokolu HTTP. Celou situaci mírně komplikuje to, že
dnes existují 3 verze protokolu 0.9, 1.0 a 1.1. Formát požadavku a odpovědi se
v jednotlivých verzích odlišuje.
Probereme si komunikaci mezi klientem a serverem ve všech 3 verzích HTTP.
HTTP verze 0.9
V HTTP/0.9 je formát požadavku velice jednoduchý. Jde o jeden řádek, kde je za
klíčovým slovem GET uvedena cesta k požadovanému dokumentu. Pokud chceme pomocí
HTTP/0.9 získat např. dokument http://www.server.cz/ ~krystof/linky.html,
musíme se připojit k počítači www.server.cz na port 80 (standardní port služby
WWW) a zaslat požadavek:
GET /~krystof/linky.html
Jako odpověď nám přijde obsah souboru linky.html. Vše si můžeme sami vyzkoušet
a zahrát si na prohlížeč. Stačí spustit Telnet a přihlásit se k nějakému
serveru na port 80. Pak napíšeme HTTP požadavek a necháme se překvapit, co nám
server odešle zpět (viz obr. 3).
Na tomto místě musíme připomenout, že cesta za slovem GET nemůže být prázdná a
musí vždy obsahovat alespoň lomítko:
GET /
Možná vás napadlo, jaký dokument odešle server jako odpověď, pokud v požadavku
není určen přímo soubor, ale pouze adresář (nebo dokonce jen kořenový adresář
jako v našem příkladě). V tomto případě WWW server hledá v adresáři soubor,
který se jmenuje index.html, default.html či welcome.html záleží přitom na jeho
konfiguraci. Pokud hledaný soubor nalezne, odešle jej jako odpověď. Pokud
takový soubor neexistuje, odešle výpis obsahu adresáře (pokud to není v
konfiguraci serveru zakázáno).
Jména souborů, které se hledají v případě požadavku, jenž obsahuje pouze jméno
adresáře, lze pro server Apache nastavit v konfiguračním souboru srm.conf
pomocí direktivy DirectoryIndex. Díky této vlastnosti můžeme používat URL
adresy tvaru http://www.server.cz/.
V příštím pokračování našeho seriálu se podíváme na pokročilejší verze
přenosového protokolu HTTP, tedy 1.0 a HTTP 1.1.
8 0818 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.