Mít vlastní Knihu návštěv by chtěl mít asi každý. Mnozí sáhnou po skriptech, které jsou k mání na Internetu – zejména u webů poskytujících bezplatný hosting stránek, někteří si je napíší sami s využitím databáze a my to dnes zkusíme bez použití databáze – pouze s textovým souborem.

Část první: formulář

Nejdříve si připravíme formulář, kterým budeme odesílat údaje na server. Zvolíme si položky, které chceme, aby mohl návštěvník vyplnit. V našem případě to bude jméno, e-mail a samotný text. Tento jednoduchý formulář bude vypadat přibližně takto:

<form action=“insert.asp“ method=“post“ name=“formik“>
<table border=“0″ cellpadding=“0″ cellspacing=“0″>
<tr><td>Jméno: <input type=“Text“ name=“jmeno“ size=“10″></td>
<td>E-mail: <input type=“Text“ name=“email“ size=“10″></td></tr>
<tr><td colspan=“2″><textarea name=“text“ cols=“46″ rows=“12″></textarea></td></tr>
<tr><td align=“center“ colspan=“2″><input type=“Submit“ value=“Odeslat příspěvek“></td></tr></table>
</form>

Máme tedy formulář a v něm tato pole: jmeno, email a text. Skript, který bude zpracovávat vložení, se jmenuje insert.asp a metoda, kterou data posíláme, je post.

Část druhá: vkládání

V tuto chvíli se přesuneme na stranu serveru do ASP stránek psaných pomocí VBScriptu.
Nejdříve si do proměnných vložíme obsah formuláře.

<%@ language=“VBSCRIPT“%>
<%
text = request.form(„text“)
‚do proměnné text vloží obsah formulářového pole text
jmeno = request.form(„jmeno“)
‚do proměnné jmeno vloží obsah formulářového pole jmeno
email = request.form(„email“)
‚do proměnné email vloží obsah formulářového pole email
%>

Tím si zjednodušíme pozdější práci s formulářovými poli.

Dále si připravíme funkci na zformátování českého data, abychom si mohli zapsat datum odeslání příspěvku.

<%
Function cDateCzech(ByVal Datum)
cDateCzech = Day(Datum) & „.“ & Month(Datum) & „.“ & Year(Datum) & “ “ & Hour(Datum) & „:“ & minute(Datum) & „:“ & second(Datum)
‚sestavíme datum v českém formátu dd.mm.yyyy hh:mm:ss
End Function
%>

Pro ukládání budeme používat textový soubor, kde každá řádka bude jeden příspěvek. Proto budeme muset nahradit všechna zalomení řádků z kteréhokoliv operačního systému, tedy všechny Cr, Lf i CrLf. To uděláme následující funkcí:

<%
function nahrentery(textik)
textik = replace(textik,vbNewLine,“<br>“)
textik = replace(textik,vbcrlf,“<br>“)
textik = replace(textik,vbcr,“<br>“)
textik = replace(textik,vblf,“<br>“)
nahrentery = textik
‚nahradíme všechny možné konce řádků
end function
%>

Tím jsme dostali celý příspěvek do jedné řádky. Teď už můžeme sestavit řetězec, který si budeme ukládat do textového souboru. Jako oddělovač použijeme tabulátor, pro který má vbscript konstantu vbtab. Řetězec bude vypadat následovně:

retez = request.servervariables(„REMOTE_HOST“)& vbtab & request.servervariables(„HTTP_USER_AGENT“)& vbtab & cDateCzech(now) & vbtab & nahrentery(text) & vbtab & jmeno & vbtab & email ‚sestavíme řetězec z námi vybraných proměnných

První dvě položky v řetězci jsou serverové proměnné, REMOTE_HOST je adresa počítače, ze kterého přichází náš návštěvník a HTTP_USER_AGENT je řetězec, kterým se hlásí serveru prohlížeč. Ty použijeme pro statistické účely. Ostatní známe, jsou to proměnné které jsme si připravili.

A teď už jen zapsat do souboru. K tomu nám pomůže metoda OpenTextFile objektu Scripting.FileSystemObject.

<%
Set fs = CreateObject(„Scripting.FileSystemObject“)
‚vytvoříme objekt filesystemu
Set a = fs.OpenTextFile(Server.MapPath(„test.txt“), 8, True)
‚otevřeme soubor pro přidávání
a.WriteLine retez
‚zapíšeme řádku do souboru
a.close
‚zavřeme soubor
set fs = nothing
‚zrušíme objekt filesystemu
%>

Tím jsme zápis dokončili. Otevřeli jsme si soubor pro přidávání, zapsali jsme do něj na nový řádek náš řetězec a zase jej uzavřeli.

Část třetí: Čtení

Vrátíme se do souboru s formulářem, ve kterém si vypíšeme obsah našeho textového souboru.
Pod podmínkou, že soubor existuje, si jej otevřeme pro čtení. Poté budeme v cyklu číst řádku po řádce a rozkládat ji na jednotlivé části. Ty si budeme ukládat do pole a jeho prvky si vypíšeme, jak budeme chtít.

<%
set fs = CreateObject(„Scripting.FileSystemObject“)
‚vytvoříme objekt filesystemu
If (fs.FileExists(Server.MapPath(„test.txt“))) Then
‚zjistíme zda soubor existuje
Set a = fs.OpenTextFile(Server.MapPath(„test.txt“), 1)
‚pokud ano, otevřeme soubor pro čtení
Do While a.AtEndOfStream <> True
‚smyčka dokud není souboru konec
retez = a.ReadLine
‚přečteme řádek
cast = split(retez,vbtab)
‚rozdělíme ho na části
%>
<%= cast(0)%>|<%= cast(1)%>|<%= cast(2)%>|<%= cast(3)%>|<%= cast(4)%>|<%= cast(5)%><br>
<%
‚vypíšeme části
loop
‚uzavřeme smyčku
a.close
‚zavřeme soubor
else%>
Žádná odpověď.
<%End If%
set fs = nothing
‚zrušíme objekt filesystemu
%>

A to je vše. Samozřejmě se můžete rozhodnout, co všechno budete ze získaných dat zveřejňovat a jako to bude upravené. To už záleží jen na vás.

Žádný příspěvek v diskuzi

Odpovědět