Implementarea unui formular de login
Scris de Agkelos
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.
<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:
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: 70user=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 primul 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 trebui 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:
<?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 orice pagina de pe site care are scriptul de verificare.
Scriptul de verificare este simplu si are un continut de forma:
<?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 primul 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 ambele
conditii sunt indeplinite se afiseaza textul dedicat utilizatorilor inregistrati. In caz contrar se afiseaza un mesaj care il poate vedea orice utilizator care nu este inregistrat.
Sper ca a fost destul de simplu tutorialul. Pentru detalii, nelamuriri sau extensii intrebati
pe forum :D
– OSHO
– www.skullbox.info
Categoria: Web
