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
-
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
Vaše pošta může být špatně nastavena – svěřte ji profesionálům
13. července 2023 -
Certifikáty Entrust ztratí důvěru Google Chrome
8. července 2024
Nejnovější
-
Jak zvýšit CTR vašeho e-mail marketingu
9. září 2024 -
Znovuuvedení domény .AD
5. září 2024 -
Jak vybrat doménu: Co je dobré vědět?
2. září 2024 -
Proč je důležité tvořit obsah na váš web?
29. srpna 2024