Vkládání souborů a dat na straně serveru

25. května 2000

Direktiva include patří k jednomu z mnoha užitečných nástrojů technologie ASP, který vám s trochou rozmyslu a přípravy dokáže ušetřit spoustu práce a někdy i starostí. Pomocí include můžete do stránek pomocí serveru vkládat opakující se skripty, funkce nebo pomocné soubory.

Osobně se domnívám, že hlavně mezi začátečníky je direktiva často opomíjena, její důležitost a praktičnost si uvědomíte třeba ve chvíli, kdy zákazník vyžaduje drobnou změnu v navigaci téměř dokončených stránek. V mém případě jich bylo téměř 50 – již nikdy více.

Cesta:
Pro určení cesty souboru lze použít relativní cestu od adresáře – použijete FILE:

<!– #INCLUDE FILE=“../soubor.inc“ –>

nebo relativní cestu od rootu – použijete VIRTUAL:

<!– #INCLUDE VIRTUAL=“soubor.inc“ –>

Vkládání:
Přestože to není nezbytně nutné, Microsoft doporučuje používat připonu *.inc. Pro přehlednost se to jistě vyplatí. Přípona .inc má ovšem tu nevýhodu, že pokud ve vkládaném skriptu bude chyba, případný „zájemce“ si dokáže podle chybové hlášky stáhnout zdrojový kód tohoto skriptu. Ve stránce je nutné direktivu umístit do komentáře HTML, např.

<!– #INCLUDE FILE=“navigace.inc“ –>

Soubor lze vložit jak na začátek stránky (před značku <html>, tak do těla stránky – do sekce <body>.

Obsah souboru:
Vkládaný soubor může obsahovat jak čisté HTML, tak i serverový nebo klientský skript. Pochopitelně obsahem může být i textový soubor nebo XML apod. U serverového skriptu je nutné uzavření do <<%…%>, jinak je kód interpretován jako HTML.

Problémy a omezení:

  • vkládaný soubor nelze umístit uvnitř serverového skriptu. Např. zápis:


    <% První část skriptu…
    <!– #INCLUDE FILE=“soubor.inc“ –>
    konec skriptu %>

    skončí chybou, přičemž správný zápis je následující:

    <% První část skriptu……%>
    <!– #INCLUDE FILE=“soubor.inc“ –>
    <% druhá část skriptu %>

    Direktivu include server zpracuje před zpracováním dalšího kódu, proto nelze dynamicky rozhodnout, který soubor se vloží. Z tohoto důvodu např. následující skript skončí chybou:

    <%
    Soubor = Request.Form(„Soubor“)
    %>
    <!– #INCLUDE FILE=“<%soubor%>.inc“ –>

    Obejít to lze, alespoň částečně buď pomocí Select…Case, nebo If…Then. Např:

    <%
    Soubor = Request.Form(„Soubor“)
    If soubor = „první“ Then
    %>
    <!– #INCLUDE FILE=“první.inc“ –>
    <% Else%>
    <!– #INCLUDE FILE=“druhy.inc“ –>
    <% End If %>

    Je nutné si ovšem uvědomit, že do stránky byly vloženy oba soubory, výsledek podmínky pouze rozhodl o zobrazení jednoho z nich.

  • Vkládaný soubor v sobě nemůže mít dále vložený aktuální soubor, dojde k zacyklení a podle dokumentace Microsoftu je nutné restartovat webové služby.

    Praktické použití:
    Možnosti direktivy include jsou obsáhlé a každý ji jistě použije podle svého. Osvědčilo se mi používání v navigacích:

    <link rel=“stylesheet“ href=“muj_styl.css“>
    <Table width=“135″ border=“0″ >
    <% Strconn = „DRIVER=Microsoft Access Driver (*.mdb);DBQ=“ & Server.MapPath(„serverdata/databaze.mdb“)
    Set conn = server.createobject(„adodb.connection“)
    Conn.open strconn %>
    <% sql = „SELECT * FROM Vyber_navigaci Order By Poradi_navigace „
    Set rs = Conn.Execute (sql)%>
    <% Do While Not rs.EOF %>
    <tr> <td><a href=“<%=rs(„link“)%>“><%=rs(„text“)%></a></td></tr>
    <% rs.MoveNext
    loop %> </table>
    <% Conn.close
    Set conn=nothing %>

    Při definici a otevření spojení k databázi:

    <% strconn = „DRIVER=Microsoft Access Driver (*.mdb); DBQ=“ & Server.MapPath(„serverdata/databaze.mdb“)
    Set conn = server.createobject(„adodb.connection“)
    Conn.open strconn %>

    Výhodné je používání u funkcí, konstant, hlaviček, hesel, copyrightu, prostě všude, kde se jedná o identický kód, který můžete jednoduše změnit pro všechny stránky najednou. Zajímavé může být použití, které se mi osvědčilo při „hlídání“ chyb v aplikacích zákazníků. V kritických místech je vložen soubor chyba.inc přibližně s tímto obsahem:

    <% If err.Number <> 0 Then
    Stranka = Request.ServerVariables(„Path_Info“)
    Skript= Request.ServerVariables(„Script_Name“)
    Set SM = Server.CreateObject(„CDONTS.NewMail“)
    SM.From = „domena.cz“
    SM.To = „j.nachtigal@interier.com“
    SM.Subject = Stranka
    SM.Body = Skript
    SM.Importance= 2
    SM.Send
    Set SM = Nothing
    End If %>

    Tento malý soubor při chybě na stránce , kterou může zákazník způsobit například špatně zadanými údaji v databázi, odešle do schránky mail s adresou a skriptem ve kterém došlo k chybě. Jednoduché a užitečné.

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

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

  • Štítky: Články

    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 *