Přístup na zaheslované na stránky pomocí ASP 2.
V předchozím článku jsme si ukázali, jak omezit přístup na část stránek pouze pro určité uživatele bez použití databáze. Při větším počtu uživatelů se však správa jmen a hesel přímo v přihlašovací stránce stává nepraktickou. Navíc bychom chtěli uživatelům například umožnit, aby si sami mohli změnit heslo. V tom případě nám nezbývá, než uložit jména a hesla uživatelů do databáze.
Pro náš příklad si vytvoříme databázi data.mbd s tabulkou tabUzivatele, která bude obsahovat jména a hesla uživatelů.
id | Jmeno | Heslo |
1 | pepa | 123 |
2 | karel | abc |
3 | admin | 000 |
Na stránce login.asp z druhého příkladu v minulém článku se změní pouze vyhodnocovací skript na začátku stránky, HTML část zůstane beze změny. Skript pro kontrolu jména a hesla bude vypadat takto:
|
Jistě na první pohled vidíte, že je dost podobný skriptu, který jsme použili minule. Takže si popíšeme, jak skript pracuje. Opět si nejprve načteme hodnoty z formuláře do proměnných jmeno, heslo a odeslano a vynulujeme kontrolní session proměnnou. Pak následuje kontrola jména a hesla, která proběhne pouze tehdy, je-li odeslano=“1″. To totiž znamená, že stránka byla volána odesláním formuláře a ne odjinud (v tom případě bychom neměli žádné jméno a heslo ke kontrole).
Nyní se dostáváme k místu, odkud se náš nový skript od minulého liší. Nejprve si vytvoříme spojení s databází. V našem případě s Accessovskou databází data.mbd. Pak si sestavíme SQL dotaz, který nám z tabulky vybere řádek uživatele se jménem jmeno a tímto SQL dotazem vytvoříme recordset rs. (Říkám řádek a ne řádky, protože předpokládám, že neexistuje víc uživatelů se stejným jménem.) Nyní přistoupíme k vlastnímu vyhodnocení jména a hesla. Podmínka rs.EOF je splněna tehdy, pokud ukazatel v recordsetu je za posledním záznamem. Po vytvoření recordsetu je ukazatel vždy na prvním záznamu. Pokud je zároveň na konci, znamená to, že recordset je prázdný, neobsahuje žádný řádek. Neboli uživatel se jménem jmeno vůbec neexistuje. Poznamenáme si tedy že došlo k chybě č. 1. Pokud tomu tak není, znamená to, že záznam uživatele jmeno jsme našli a porovnáme jeho heslo. Pokud nesouhlasí, došlo k chybě č. 2. Pokud nedošlo ani k jedné z předchozích možností, znamená to, že jméno i heslo souhlasí. Zapíšeme jméno přihlášeného uživatele do session(„JmenoUzivatele“) a přesměrujeme na první ze zabezpečených stránek.
Zbytek je již stejný jako v příkladu v minulém článku. Pokud nebylo možno uživatele přihlásit, použijeme proměnnou chyba k vypsání důvodu proč a opět zobrazíme přihlašovací formulář.
U větších projektů (a evidenci uživatelů v databázi použijeme spíš u většího projektu) budeme často chtít nějakým způsobem monitorovat činnost uživatelů. To znamená, že pokud uživatel udělá například nějakou změnu v databázi, budeme si chtít poznamenat, který uživatel tuto změnu provedl. V tom případě by bylo výhodnější poznamenat si místo jména uživatele jeho id. V tom případě se místo session(„JmenoUzivatele“) použijeme session(„idUzivatele“). SQL dotaz se nám změní takto:
|
Id uživatele si poznamenáme takto:
|
A ke kontrole, zda je přihlášen nějaký uživatel na zabezpečených stránkách pozměníme takto:
|
Celou stránku login2.asp, která slouží k přihlášení se za pomoci databáze spolu s ukázkovou databází si můžete stáhnout zde. Přeji vám hezký den.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Proč je důležité tvořit obsah na váš web?
29. srpna 2024 -
Aukce CZ domén: Jak vydražit expirovanou CZ doménu?
12. června 2024 -
Globální výpadek IT systémů: Může za to jediná aktualizace
19. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024