Přístup na zaheslované na stránky pomocí ASP 1.
Ukážeme si jednoduchý způsob, jak vymezit přístup na určitá stránky pouze vymezenému okruhu uživatelů bez použití databáze. Tento způsob sice neposkytuje žádný komfort při správě jmen a hesel, protože jejich seznam je dán natvrdo ve stránce. Pokud nemůžeme z nějakého důvodu použít databáze anebo tam, kde je velice málo uživatelů a nepotřebujeme často měnit hesla, tento postup zcela dostačuje.
Princip si ukážeme na tom nejjednodušším případě, kdy máme jenom jednoho uživatele. Potřebujeme jednak přihlašovací stránku, která bude obsahovat formulář na zadání jména a hesla současně i vyhodnocovací skript, jednak include, který vložíme do všech zabezpečených stránek, a který nepřihlášeného uživatele přesměruje na stránku s přihlášením.
Stránka login.asp, sloužící k přihlášení a ověření hesla by mohla vypadat třeba takto:
|
Stránka obsahuje vyhodnocovací skript a formulář s poli pro zadání jména a hesla. Tento formulář se odesílá opět na tuto stránku. Ve skriptu na začátku stránky login.asp nejprve kontrolní session proměnné JmenoUzivatele přiřadíme hodnotu prázdný řetězec. To proto, abychom tuto stránku mohli zároveň použít i k odhlášení. Pak porovnáme jméno a heslo s hodnotami v request.form (Při prvním zavolání stránky obsahují samozřejmě prázdné hodnoty, takže podmínka není splněna a dojde pouze k zobrazení formuláře.) Pokud jméno a heslo souhlasí, vložíme jméno uživatele do kontrolní session proměnné JmenoUzivatele a přesměrujeme na první ze zabezpečených stránek.
Na začátek všech zabezpečených stránek vložíme (nejlépe jako include) kód, kontrolující zda je někdo přihlášen:
|
Tento kód má velice jednoduchou funkci – pokud není přihlášen žádný uživatel, dojde k přesměrování na stránku login.asp.
Takže jak to celé bude fungovat: Při prvním zavolání stránky login.asp jsou v request.form(„jmeno“) i request.form(„heslo“) prázdné řetězce, k přesměrování tedy nedojde a zobrazí se formulář. Uživatel zadá jméno a heslo a formulář je oseslán opět na stránku login.asp. Pokud je jméno nebo heslo chybné, k přesměrování opět nedojde a znovu se zobrazí formulář. Pokud jméno i heslo souhlasí, je v session(„JmenoUzivatele“) uloženo jméno uživatele a dojde k přesměrování na některou ze zabezpečených stránek. Na všech zabezpečených stránkách je pak kód, který pokud je session(„JmenoUzivatele“) prázdná, provede přesměrování na stránku login.asp. Pokud se tedy někdo nepovolaný dostane na zabezpečenou stránku např. tak, že její URL napíše do adresního řádku, bude přesměrován na přihlašovací stránku. Odhlášení uživatele provedeme jednoduše zavoláním stránky login.asp. Proto na začátku skriptu dáváme do session(„JmenoUzivatele“) prázdný řetězec.
To byl jednoduchý příklad, vhodný tak pro pochopení principu. V praxi budeme asi požadovat trošku víc. Jednak budeme chtít mít několik uživatelů, jednak by to chtělo při špatném zadání jména či hesla na to uživatele upozornit. Takže si stránku login.asp trošku upravíme. Do formuláře přidáme skryté pole:
|
podle kterého poznáme, zda se jedná o první volání stránky či zda byl odeslán formulář. Vyhodnocovací skript bude vypadat takto:
|
Náš nový skript funguje takto: – nejprve si načteme hodnoty z request.form do proměnných Jmeno, Heslo a Odeslano, aby se nám s nimi lépe pracovalo. Pak opět vložíme do session(„JmenoUzivatele“) prázdný řetězec. Následuje blok kontroly jména a hesla, který se provede pouze, pokud je Odeslano=“1″, tedy pokud byla stránka volána odesláním formuláře.
Ke kontrole jmena a hesla bychom mohli použít několikeré opakování podmínky if-then z prvního příkladu. Mnohem elegantnější a přehlednější bude použít objekt Dictionary, se kterým jste se mohli seznámit v tomto článku. To oceníte v okamžiku, kdy budete potřebovat upravit seznam uživatelů a jejich hesel. Takže vytvoříme dictionary objekt oHesla a nastavením vlastnosti CompareMode určíme, zda se jméno uživatele bude porovnávat textově či binárně (tj. jestli se rozlišují malá a velká písmena). Pak objekt naplníme seznamem uživatelů a jejich hesel. Jméno klíče je jméno uživatele a hodnota klíče je jeho heslo. Díky použití objektu dictionary máme všechna jména a hesla pěkně na jednom místě, což nám v budoucnu usnadní jejich správu.
Následuje kontrola jména a hesla. Nejprve zjistíme, jestli existuje klíč se jménem Jmeno. Pokud ne, znamená to, že tento uživatel neexistuje a proměnné Chyba přiřadíme hodnotu 1. (Tuto proměnnou využijeme později, kdy podle její hodnoty oznámíme uživateli, proč se mu nepodařilo se přihlásit.) Pokud klíč existuje, porovnáme jeho hodnotu s hodnotou Heslo. Pokud heslo nesouhlasí, nastavíme proměnnou Chyba na 2. Pokud nenastala ani jedna tato situace, znamená to, že jméno a heslo souhlasí a můžeme uživatele přihlásit. To znamená, že zapíšeme jeho jméno do session(„JmenoUzivatele“) a přesměrujeme na první ze zabezpečených stránek.
Ještě nám zbývá využít proměnnou Chyba k vypsání zprávy, proč se uživateli nepodařilo přihlášení. Někam na stránku (nejspíš asi pod přihlašovací formulář) umístíme tento kód:
|
Ještě vysvětlení, proč jako kontrolní hodnotu používáme zrovna jméno uživatele – toto jméno můžeme vypisovat na všech zabezpečených (vlastně i nezabezpečených) stránkách:
|
Pokud z nějakého důvodu nechcete nebo nemůžete použít session proměnnou, můžete použít cookies. K vynulování použijete:
|
K po přihlášení nastavíte její hodnotu takto:
|
A ke kontrole přihlášeného uživatele:
|
A to je vše. Zdrojový soubor login.asp si stáhněte zde.
Mohlo by vás také zajímat
-
Umělá inteligence v IT
27. září 2023 -
Znovuuvedení domény .AD
5. září 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024