Eszköztár
162 Kezdőlap - Webszerkesztés - MySQL - Bejelentkezés
ujdomainek.hu

Bejelentkezés

és beléptetés, kiléptetés

Jegyzet

Ha már működik a honlapunkon a regisztráció, akkor szükségszerűen adódik a bejelentkezés lehetőségének megvalósítása. Szóhasználat tekintetében picit finomítsunk a dolgon:

Mitől lesz valaki beléptetve az oldalra?

Mivel a bejelentkezés nem csupán egyetlen lapra, hanem az egész weboldalra (vagyis annak összes lapjára) történik, ezért úgy kell megvalósítani a bejelentkeztetést, hogy az ehhez eltárolt adatok minden lapon elérhetőek legyenek. Ez a tény pedig már azonnal meg is adja a fenti kérdésre a választ: session-változókat kell használnunk. Legegyszerűbb bejelentkeztetésként tehát a $_SESSION nevű változóba (annak egy elemébe) be kell írnunk a bejelentkezett felhasználó adatbázisban (regisztrációkor) rögzített user-azonosítóját.

Persze, ha kicsit előrelátóak vagyunk, akkor nemcsak a user-azonosítót tároljuk el, hanem ennél több adatot is a felhasználóról: például a felhasználónevét (hátha ki kell valahol írni), esetleg e-mail címét, illetve a státuszát - ez utóbbit különösen akkor, ha ez egyben jogosultságok meghatározását is jelenti számára az oldal használata tekintetében.

A beléptetés lépései tehát a következők:
1.   Kapunk egy felhasználónév (de inkább e-mail cím) illetve jelszó párost az belépési felületről.
2.   Megnézzük, hogy a kapott adatok szerepelnek-e az adatbázisban a regisztrált felhasználók között.
3.   Ha igen, akkor kiolvassuk az adatbázisból a szükséges adatokat, és a $_SESSION változóba írjuk őket.
Ezt követően már csak annyi a dolgunk, hogy minden oldal elején megvizsgáljuk, van-e írva adat a $_SESSION megfelelő elemeiben, vagy sem. Ha igen, akkor a belépés utáni képernyőt jelenítjük meg a böngészőben, ha pedig nem, akkor a belépő felületet mutatjuk.

Mindezek tükrében a programunk alapját az alábbi kódvázlat adhatja:
... session-indítás, adatbázishoz csatlakozás...

$mail = $_POST[mail] ;
$pw   = md5( $_POST[pw] ) ;

$userek = mysqli_query( $adb , "
                                     SELECT * FROM user 
                                     WHERE umail='$mail' AND upw='$pw' 
                               " ) ;

if( mysqli_num_rows($userek) > 0 )
{
    $user = mysqli_fetch_array( $userek ) ;
    $_SESSION[uid]   = $user[uid]      ;
    $_SESSION[unev]  = $user[unev]     ;
    $_SESSION[ustat] = $user[ustatusz] ;
    ...átirányítás a belépés utáni oldalra...
}
else
{
    ...a belépési adatok hibájára utaló kiírás...
}
A tényleges beléptetés tehát a félkövéren szedett pár sor, ahol a munkamenet-változóba való írás történik.

Honnan fogjuk tudni (az oldal üzemeltetőjeként), hogy mely felhasználónk mikor lépett be?

És egyáltalán: fontos kérdés-e ez valójában?

Ha nem "írjuk fel" magunknak, hogy ki mikor lépett be az oldalunkra, akkor igazából fogalmunk sem lesz róla, mi történik a saját weboldalunkon. Nem fogjuk tudni, kik a leghűségesebb látogatóink, kik azok csak egyszer léptek be, illetve kik azok, akik már nagyon rég óta nem is jártak nálunk. Ha pedig ez így lenne, akkor igazából azt sem tudnánk, mennyire sikeres az oldalunk, min érdemes dolgoznunk - illetve egyáltalán: érdemes-e fejlesztenünk.

Persze, az igazán korrekt megoldás az lehet, ha minden egyes oldalmegtekintést adatbázisba jegyzünk, eltárolva azt is, hogy mely belépett látogatónk nézte meg az adott tartalmat, az egyszerűség kedvéért most még maradjunk annál a megoldásnál, hogy csak a belépéseket naplózzuk. Ehhez kell készítenünk egy adatbázistáblát - pl. login néven -, az alábbihoz hasonló szerkezettel:
	lid		N 11	login azonosító (elsődleges kulcs)
	uid		N 11	belépett user azonosítója
	ldatum		DT	a belépés időpontja
	lip		N 32	a belépéshez használt eszköz IP-címe
	lsess		C  8	a session-azonosító első néhány karaktere
Ha ez megvan, akkor a fentebb vázolt forráskódot ki kell egészíteni azzal, hogy a belépéskor írjunk egy új sort a login táblába az eltárolandó tartalmakkal. Innentől visszamenőleg is tudni fogjuk, ki mikor, hányszor lépett be, vagy éppen mióta nem lépett be az oldalunkra. (Továbbra is érdemes azonban hangsúlyozni, hogy ennek a megoldásnak egy továbbfejlesztett változatában minden oldallátogatást is naplózhatunk, ami gyakorlatilag szükségtelenné teheti a belépések naplózását, hiszen az oldallátogatások feljegyzése alkalmával a látogató user azonosítóját is eltárolhatjuk.)

Mi történik a beléptetés után?

Mivel alapszabály, hogy a weboldalunk minden oldalát az index.php kezdőfájlon keresztül, a megfelelő paraméterezés megvalósításával töltünk be, ezért belépés után a teendő az index.php újratöltése. Éppen ezért az index.php-nek tartalmaznia kell egy feltételt, ami eldönti, hogy be van-e már lépve a látogatónk, vagy még nincs, és ennek megfelelően vagy a belépő formot, vagy a belső tartalmat kell megjelentenie, valahogy így:
session_start() ;

include("fejlec.php") ;

if( $_SESSION[uid] != "" )  include("belsooldal.php") ;
else                        include("login_form.php") ;

include("lablec.php") ;

Hogyan valósul meg a kiléptetés?

Ha a beléptetést a session-be való írás jelentette, akkor a kiléptetést a session törlésével lehet megvalósítani. Az alábbi néhány programsornak a "Kilépés" gomb megnyomásának hatására kell lefutnia.
session_start() ;
session_destroy() ;
...index.php újratöltése...

Feladat

A korábbi Regisztráció folytatásaként készítsen beléptető felületet, és oldja meg, hogy megfelelő e-mail cím illetve jelszó megadása után a felhasználó csakugyan a belső képernyőn találja magát.

A belső képernyőn listázza ki a felhasználó számára az eddig regisztrált felhasználók neveit és az utolsó belépésük időpontját. Ha valaki még sosem lépett be, akkor őket a lista végén szerepeltesse, az időpont helyén a "még sosem lépett be" szöveggel.

A belső képernyőn gondoskodjon a kilépés lehetőségéről.

előző oldal random oldal következő oldal


2024-03-29 00:41:16 Admin Köszönöm, ha Ön lesz az első, aki megírja ide véleményét, észrevételét, kérdését ezzel a lappal kapcsolatban.




Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenhat + hat?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 2020. április