Dynamické generování WWW stránek
na straně serveru

Technologie pro tvorbu dynamických WWW stránek.
Porovnání nejpoužívanějších technologií: ASP a PHP.
Ukázky jednoduchých příkladů.

Obsah

  1. Lehký úvod
  2. SSI
  3. ASP
  4. PHP
  5. Ukázky kódu

Lehký úvod

Moderní webové stránky musí pružně reagovat na požadavky uživatelů a zpřístupňovat informace, které se v čase mění. Stránka tedy nemůže být napevno uložena někde na disku serveru, ale pro každý požadavek uživatele se musí znovu vytvořit tak, aby reflektovala aktuální stav věci. Těmto požadavkům lze vyhovět pouze tak, že každý požadavek na stránku vyvolá spuštění programu (tzv. skriptu), který si zjistí všechny potřebné aktuální informace a složí z nich výslednou podobu stránky v HTML.
Dynamické generování WWW stránek lze rozděli podle místa provádění skriptů na :
Při generování na straně klienta dostane klient www stránku včetně zdrojových kódů nebo binárních souborů a je na počítači klienta, aby provedl potřebné úpravy a předal prohlížeči stránku vhodnou pro zobrazení.
Naopak, pokud dochází ke generování na straně serveru, jsou všechny vsuvky a zdrojové kódy provedeny a interpretovány a stránka je serverem sestavena do obyčejné statické webové stránky a poslána klientovi, který se stará jen o její zobrazení.
Pro generování na straně serveru se dnes používají dva základní druhy skriptů:
V případě serverem vkládaných vsuvek se příkazy skriptu kombinují přímo se zápisem stránky v HTML. Předtím než je stránka odeslána uživateli, jsou všechny příkazy skriptu vyhodnoceny a jejich výsledek doplněn na odpovídající místo stránky. O vyhodnocení a zpracování příkazů se stará sám WWW-server. Do prohlížeče dorazí již zcela běžná stránka zapsaná v HTML.
Nejstarším zástupcem serverem vkládaných vsuvek jsou SSI (Server Side Includes). Mnohem větší možnosti nabízejí komerční systémy Server Side JavaScript (Netscape) a ASP (Active Server Pages -- Microsoft). Stejné možnosti nabízí i volně šiřitelný systém PHP.
CGI-skripty jsou programy zapsané v libovolném programovacím jazyce a přeložené do spustitelné podoby (např. exe-soubor). Pokud server obdrží jako požadavek URL, které ukazuje na spustitelný program, program spustí a výsledek jeho běhu předá prohlížeči jako odpověď. CGI-skript tedy musí na svůj výstup zapisovat ve formátu HTML.
Pro psaní CGI-skriptů se nejčastěji používají příkazové shelly, což je obdoba dávkových souborů v Unixu, a jazyk Perl. Nic však nebrání tomu psát CGI-skripty i v C/C++, Pascalu nebo třeba v Javě. Na tomto místě můžeme připomenout, že Java kromě možnosti tvorby Java-apletů nabízí i možnost vývoje klasických aplikací.

[na obsah]


SSI

Princip SSI spočívá v tom, že do zápisu stránky v HTML můžeme doplnit některé příkazy zapsané ve speciálním formátu. WWW-server HTML stránku před odesláním klientovi (prohlížeči) prohlédne a všechny vložené příkazy provede.
SSI se do stránky vkládají v následujícím tvaru:
<!--#příkaz parametr="hodnota"-->
Vidíme, že SSI se uzavírají do HTML komentáře (<!-- ... -->). Důvod je jednoduchý: Pokud server neumí SSI příkaz interpretovat a neprovede jej, dorazí do prohlížeče SSI jako obyčejný komentář, který neovlivní výsledné zobrazení stránky.
Je třeba zdůraznit, že ne všechny servery podporují SSI samy od sebe. Zejména komerčně pronajímané servery poskytovatelů připojení mívají podporu SSI z bezpečnostních důvodů vypnutou. Před používáním SSI je tedy vždy nutné zjistit od správce serveru, zda máme právo SSI používat.
Aby server nemusel před odesláním prohlížeči kontrolovat přítomnost SSI ve všech .html souborech, ukládají se stránky s SSI obvykle do souborů s příponou .shtml. WWW-server je pak nakonfigurován tak, aby SSI prováděl v těchto souborech. Toto opatření pomáhá zvýšit výkon serveru v případech, kdy SSI obsahují pouze některé stránky.
Nejběžnější SSI příkazy:

[na obsah]


ASP

ASP (Active Server Page) je technologie Microsoftu určená pro tvorbu webových aplikací. ASP fungují na principu serverem vkládaných vsuvek - stránku doplníme o příkazy, které se vždy před odesláním stránky provedou na serveru. Příkazy jsou oddělovány pomocí <% a %>. Stránky jsou ukládány pro rozlišení od běžných HTML stránek s příponou .asp. Jako skriptovací jazyk můžeme použít VBScript nebo JScript. (JScript je implementace JavaScriptu od Microsoftu.) ASP mají modulární strukturu, takže umožňují použití téměř libovolného programovacího jazyka. K dispozici jsou moduly např. pro Perl, REXX a Python. Standardně podporované jazyky totiž nejsou ideální pro vývoj webových aplikací, protože nemají moc silné funkce pro práci s řetězci – a ty jsou potřeba pro vyhodnocování vstupu od uživatele.
Důležitým rysem technologie ASP je, že téměř veškeré operace se provádějí pomocí objektů. Mezi základní objekty ASP patří:
Největšími nevýhodami ASP je komerční politika a platformní závislost (platforma Windows a webový server od Microsoftu). Výhodou je modulárnost a s tím související použití mnoha jazyků.

[na obsah]


PHP

PHP (Professional Home Pages) je dalším skriptovacím jazykem, který se přímo začleňuje do textu HTML stránky jako vsuvky pomocí oddělovačů <? a ?>. Vlastní skriptovací jazyk je velice podobný programovacímu jazyku C, do kterého jsou přidané některé prvky PERLU či JAVY. Celý systém je pak maximálně optimalizovaný pro snadnou a efektivní tvorbu dynamických stránek. PHP lze jednoduchým způsobem doplnit o nové funkce a objekty, které umožňují provozovat funkce, které nejsou standardně součástí PHP. Stránky obsahující PHP vsuvky jsou ukládány pro rozlišení od běžných HTML stránek s příponou .php, .php3 nebo .phtml.
Velkou výhodou PHP je to, že je šířeno jako freewarový produkt (včetně zdrojových textů) a to, že je nezávislý na platformě i na webovém serveru, na které běží. Lze jej tedy používat jak pod Windows, tak i pod Linuxem, a to v podstatě na libovolném HTTP serveru. PHP si nejlépe rozumí se serverem Apache (lze dokonce kompilovat spolu), který je rovněž pro obě platformy a opět je šířen jako freeware. Na serveru Apache je PHP možné provozovat jako standardní CGI skripty (spouští se externí interpret jazyka) nebo jako modul serveru Apache, což zvyšuje bezpečnost a rychlost prováděných operací.

[na obsah]


Ukázky kódu

Ačkoliv lze v ASP použít několik jazyků, budou všechny příklady uvedeny ve VBScriptu.

Pozdrav

ASP
<% If Time >= #12:00:00 AM# And Time <= #12:00:00 PM# Then %>
Dobré ráno!
<% Else %>
Dobré odpoledne!
<% End If %>
PHP
<? if (date("A")=="AM") {
      echo "Dobré ráno!";
    } else { 
      echo "Dobré odpoledne!";
    } ?>

Mnohonásobný výpis

ASP
<% For I = 1 to 7 %>
<FONT SIZE=<%= I %>>Ukázkový text</FONT><BR>
<% Next %>
PHP
<? for($i=0; $i<=7; $i++): ?>
<P><FONT SIZE="<?echo $i?>">Ukázkový text</FONT>
<? endfor ?>

Použití formulářů

ASP
<FORM ACTION=obsluha.asp METHOD=GET>
Jméno: <INPUT TYPE=TEXT NAME=jmeno><BR>
Věk: <INPUT TYPE=TEXT NAME=vek><BR>
<INPUT TYPE=SUBMIT VALUE="Odeslání formuláře">
</FORM>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Obsluha formuláře</TITLE>
</HEAD>
<BODY>
<H1>Výsledek obsluhy formuláře</H1>
<%= Request.QueryString("jmeno") %> je
<% vek = Request.QueryString("vek")
   If vek < 10 Then
   	Response.Write "pěknej mlíčnák"
   ElseIf vek < 20 Then
   	Response.Write "teenager"
   ElseIf vek < 60 Then
   	Response.Write "v nejlepších letech"
   ElseIf vek < 100 Then
   	Response.Write "je pravděpodobně prarodič"
   Else 
   	Response.Write "je někde mezi stovkou a smrtí"
   End If %>.
</BODY>
</HTML>
PHP
<FORM ACTION=obsluha.phtml METHOD=GET>
Jméno: <INPUT TYPE=TEXT NAME=jmeno><BR>
Věk: <INPUT TYPE=TEXT NAME=vek><BR>
<INPUT TYPE=SUBMIT VALUE="Odeslání formuláře">
</FORM>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Obsluha formuláře</TITLE>
</HEAD>
<BODY>
<H1>Výsledek obsluhy formuláře</H1>
<?  echo $jmeno ?> je 
<?  if ($vek < 10):
        echo "pěknej mlíčnák";
    elseif ($vek < 20):
        echo "teenager";
    elseif ($vek < 60):
        echo "v nejlepších letech";
    elseif ($vek < 100):
        echo "je pravděpodobně prarodič";
    else:
        echo "je někde mezi stovkou a smrtí";
    endif
?>.
</BODY>
</HTML>

[na obsah]


tyto stránky využívají kaskádní styly CSS level 1 - pro korektní zobrazení používejte prohlížeč s podporou CSS
(c) Miroslav Krupa, 2000