Jistě jste si všimli, že články o Active Server Pages začaly vycházet v
novém seriálu. Seriál ASP pro začátečníky měl za úkol vás seznámit se základy psaní aplikací v
ASP. Tento nový seriál, ASP v praxi, se bude více zabývat spíše
hotovými aplikacemi a problémy, se kterými se můžete setkat, jak již napovídá
název, v praxi, než, někdy teoretickými, základy. Budu také předpokládat, že
zvládáte všechny témata, které jsme probírali v minulém seriálu. Na závěr chci připomenout, že uvítám
jakékoliv náměty, připomínky a nápady, které mi můžete posílat na můj mail.
Ale teď se již pustíme k vytváření aplikace, pomocí které
se budou registrovaní uživatelé přihlašovat na stránky, jež jsou přístupné
jen jim. S aplikací tohoto typu jste se určitě již někde na internetu setkali.
Například přihlašování na vaše internetové rozhraní pro práci s e-maily
(webmail) je praktickým použitím této
aplikace. V tomto díle se naučíte tuto aplikaci ve zjednodušené formě vytvořit.
Prvním krokem při vytváření aplikace by mělo být její navrhnutí. Naše aplikace
bude pracovat následovně - uživatel si otevře stránku login.html
, kde do vstupního formuláře zadá potřebné informace - uživatelské jméno a heslo.
Informace se odešlou do souboru overit.asp. Tam se data zkontrolují. Pokud jsou správně
zadaná, soubor overit.asp uživatele přesměruje na stránku tajne.asp. V
opačném případě - uživatel zadá data nesprávně - bude přesměrován na stránku chyba.asp,
kde se mu zobrazí ohlášení chyby a data pak musí zadat znovu.
Jména a hesla registrovaných uživatelů budeme uchovávat v databázi. Tabulka,
nazvaná uzivatele, bude mít následující strukturu:
| Název pole |
Datový typ |
| ID |
automatické číslo - primární klíč |
| jmeno |
text |
| heslo |
text |
Aplikaci máme navrženou, takže teď můžeme začít s psaním jednotlivých souborů.
Začneme souborem login.html. Ten bude obsahovat formulář se dvěma vstupními
poli - jmeno a heslo:
|
<html> <body> <form action="overit.asp"
method="post"> <table
border="0"> <tr> <td>Uživatelské jméno:
</td> <td><input type="text" size="20"
name="jmeno"></td> </tr> <tr> <td>Heslo:</td> <td><input
type="password" size="20"
name="heslo"></td> </tr> </table> <input
type="submit" value="LOGIN"> </form> </body>
</html>
|
Data se odesílají souboru overit.asp, který je ověří:
|
<% ' Vytvoření instance objektu Connection Set Conn =
Server.CreateObject("ADODB.Connection")
' Otevření databáze (máme pro ní vytvořené ' DSN se jménem
"uzivatele") conn.Open "uzivatele"
' SQL příkaz databázi strSQL = "SELECT * FROM uzivatele
WHERE " & _ "jmeno='" & Request.Form("jmeno") & "' AND "
& _ "heslo='" & Request.Form("heslo") & "' "
' Vykonání příkazu SQL Set Rs =
conn.Execute(strSQL)
' Pokud bude jméno a heslo správné, vrátí nám databáze ' nějaká data. V
opačném případě nám nic nevrátí - ' - ukazatel bude v tabulce
na konci If Rs.EOF Then Session("prihlaseny") = ""
conn.Close Set Rs = Nothing Set conn = Nothing Response.Redirect ("chyba.html")
Else Session("prihlaseny") = 1 conn.Close Set Rs = Nothing Set conn = Nothing
Response.Redirect ("tajne.asp") End If %>
|
Doufám, že díky okomentování kódu není třeba řádek za řádkem blíže popisovat. Mám jen dvě poznámky. První
poznámkou je použití znaku _ . Pomocí něj se dají delší řetězce rozdělit na několik menších,
které se vejdou na jeden řádek. Já jsem tento znak použil, protože dotaz SQL je delší
než šířka sloupce s článkem tady na Webtipu. Druhou poznámkou chci přibližit rozhodovací konstrukci na
konci kódu. Pokud uživatel zadá správné uživatelské jméno a heslo, bude mít proměnná na úrovni připojení
prihlaseny hodnotu 1 a uživatel je přesměrován na tajne.asp, v opačném případě
je proměnná ponechána prázdná a uživateli se zobrazí chybové hlášení. Význam proměnné
prihlaseny
vám vysvětlím níže.
Teď vytvoříme soubor, na který je uživatel přesměrován při napsání nesprávného jména nebo hesla.
Tento soubor se jmenuje chyba.asp a jediné, co obsahuje, je chybové hlášení:
<html>
<head>
<title>Špatné uživatelské jméno nebo heslo!!</title>
</head>
<body>
<b>Špatné uživatelské jméno nebo heslo!!</b>
</body> </html>
|
Zbývá poslední soubor - soubor tajne.asp. Obsah tohoto souboru nechávám na vás.
Můžete do něj vložit cokoliv. Jedinou podmínkou je, abyste na jeho úplný začátek vložili tuto část kódu:
<%
If Session("prihlaseny") = "" Then
Response.Redirect ("login.html")
End If
%>
|
Je to ochrana proti tomu, aby si nějaký vychytralý uživatel, který by neměl obsah tohoto
souboru vidět, nezjistil
jeho jméno a pak by jednoduše obešel vstupní formulář a kontrolu zadaných dat tím, že by zadal jeho adresu.
Jak již víte, hodnota proměnné
prihlaseny je v souboru overit.asp nastavena na jedničku, pokud jsou zadaná data
správná. Takže jestliže uživatel obešel vstupní formulář a otevřel rovnou tuto stránku (která již má výše uvedenou bezpečnostní ochranu),
má proměnnou prihlaseny prázdnou - on ji vlastně nemá vůbec zavedenou. Tím pádem se mu nezobrazí obsah této stránky a je přesměrován
na stránku login.html.
Pokud máte více stránek, na které ze stránky tajne.asp odkazujete a také nechcete, aby je
ostatní - tj. nezaregistrovaní - uživatelé viděli, nezapoměnte tento kód vložit i na ně.
Aplikace je v tomto bodě již celá hotova. Všechny soubory si můžete stáhnout
zde . V příštím díle vytvoříme rozhraní
pro administrátora, ve kterém bude moci přidávat nové uživatele a již zaregistrované uživatele odebírat a různě editovat.
Liška Adam
|