 |
|
|
| Autor |
Mesaj |
Invo4u Administrator


Data inscrierii: 28/Dec/2006 Mesaje: 784 Localitate: P`Luna
|
Trimis: 30/12/2006 12:07 Titlul subiectului: [Tutorial] Implementarea unui formular de login |
|
|
Formular de login
Un site respectabil trebuie sa aiba si o sectiune destinata userilor, o sectiune
in care nimeni in afara de userii inregistrati nu au acces. Incepatorii in
PHP si in general in web development isi pun deseori problema "Cum pot face sa
controlez continutul afisat utilizatorilor ?". Problema are o rezolvare simpla
si anume prin controlul accesului bazat pe un username si o parola. Ce inseamna
asta ? Fiecare persoana care doreste sa vada continutul unui site va trebui sa
introduca o combinatie de user si parola valide. Cum se poate face asta ? Simplu,
folosind un formular de login, un script de verificare si apoi introducerea unui
script de validare a sesiunii care verifica daca userul a trecut prin formularul
de login sau nu.
Formularul de login.
Pentru a nu incarca tutorialul prezint un formular simplu. Banal chiar.
| Cod: | <form action="login.php" method="post">
User: <input type="text" name="user" /><br />
Pass: <input type="password" name="pass" /><br />
<input type="submit" value=" Log in " />
</form> |
Ce face formularul ? Dupa cum se poate vedea, facem formularul sa trimita datele
prin metoda POST scriptului care se poate gasi in fisierul login.php.
Datele care se trimit sunt toate datele gasite intre <form ...> si </form> si
care au un nume (name).
Pentru simplitate avem doar 3 campuri care le folosim. Un camp text cu numele
user ( name="user" ), un camp password cu numele pass si un camp submit
care nu are nevoie de nici un nume, singura lui "grija" fiind sa trimita datele
din campurile user si pass paginii login.php pentru a fi prelucrate de scriptul
de acolo.
Pentru cei curiosi de treburile interne cand se trimite formularul, browserul
va trimite catre fisierul login.php o cerere de forma:
| Cod: | POST /login.php HTTP/1.0
Referer: http://www.skullbox.info/formular.html
User-Agent: Mozilla/1.22 (Windows: I: 32bit)
Accept */*
Content-type: application/x-www-form-urlencoded
Content-length: 70
user=textul_introdus_in_campul_user&pass=textul_introdus_in_campul_pass |
OK, pana aici am facut formularul si l-am trimis fisierului login.php.
Now what ? Va trebui ca in fisierul login.php sa verificam datele. Cum
facem asta ? In debutantul rand pornim sesiunea pentru ca avem nevoie de ea,
si folosim functia session_start(). Apoi verificam daca userul a trimis
ceva. Daca nu a trimis nimic (valorile pentru user si pass nu contin nimic) afisam
un mesaj de eroare. Daca se trece mai departe, adica s-a introdus un user si o
parola verificam daca userul si parola corespund cu userul si parola care le
asteptam. Daca da, afisam un mesaj prin care instiintam userul ca e logat si
setam variabila de sesiune $_SESSION['isLogged'] cu valoarea True pentru ca
userul sa poata accesa alte pagini cu continut restrictionat fara a necesită sa
se relogheze.
Daca userul a introdus un user si o parola gresita il instiintam printr-un mesaj de
eroare ca trebuie sa introduca un user si o parola valide si incrementam valoarea
variabilei de sesiune $_SESSION['errCount'] pentru a avea control asupra numarului
de incercari nereusite.
Bun, acum sa vedem cum arata scriptul de login:
| Cod: | <?php
session_start();
$_SESSION['isLogged'] = False;
if( !isset($_SESSION['errCount']) ) $_SESSION['errCount'] = 0;
else if( $_SESSION['errCount'] >= 3 ) die("Numarul de incercari permise a fost depasit");
if( empty($_POST['user']) || empty($_POST['pass']) )
echo "Trebuie specificat un user si o parola";
else if( $_POST['user'] == 'user_test' && $_POST['pass'] == 'parola_test' ){
echo "Felicitari ! Sunteti logat in sistem";
$_SESSION['isLogged'] = True;
} else {
echo "Pentru a va loga trebuie sa introduceti un user si o parola valide";
$_SESSION['errCount']++;
}
?> |
Scriptuletul asta mic face tot ce am spus mai sus... daca totul a fost facut asa cum trebuie
adica userul si parola sunt valide putem accesa acum alte pagini restrictionate iar
in locul textului de eroare apare textul destinat utilizatorilor valizi (care au
acces prin user si parola).
OK, probabil va puneti intrebarea "Cum pot verifica daca utilizatorul a trecut prin
formularul de login?". Dupa cum se vede in codul de mai sus, un utilizator care a trecut
cu succes prin formularul de login, adica are o pereche user:parola valida are setata
variabila de sesiune $_SESSION['isLogged'] cu valoarea True. Aceasta valoare ramane
valabila pe toata perioada sesiunii (cat timp e deschis browserul) si poate fi verificata
din absolut orice pagina de pe site care are scriptul de verificare.
Scriptul de verificare este necomplicat si are un continut de forma:
| Cod: | <?php
session_start();
if( isset($_SESSION['isLogged']) && $_SESSION['isLogged'] == True )
echo "Aici puteti vedea textul dedicat utilizatorilor";
else
echo "Trebuie sa va logati pentru a vedea continutul acestei pagini";
?> |
Ce face scriptul ? In întâiul rand porneste sesiunea folosind session_start() pentru a
putea citi variabila $_SESSION['isLogged']. Apoi verifica daca e setata variabila
$_SESSION['isLogged'] si daca e setata trebuie sa aiba valoarea True. Daca cele două
conditii sunt indeplinite se afiseaza textul dedicat utilizatorilor inregistrati. In caz
contrar se afiseaza un mesaj care il poate vedea indiferent ce utilizator care nu este inregistrat.
Sper ca a fost îndeajuns de modest tutorialul. Pentru detalii, nelamuriri sau extensii intrebati
pe forum _________________
Sa Hackeresti e un vis dar sa fi hackerit e cosmar
wWw.Invo4u.Lx.Ro |
|
| Sus |
|
 |
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|
|
|