top

[Tutorial] Implementarea unui formular de login

 
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului WwW.Hack-Library.MyForuM.Ro -> Tutoriale
Autor Mesaj
Invo4u
Administrator
Administrator
Invo4u

Data inscrierii: 28/Dec/2006
Mesaje: 784
Localitate: P`Luna

MesajTrimis: 30/12/2006 12:07    Titlul subiectului: [Tutorial] Implementarea unui formular de login Raspunde cu citat (quote)

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
_________________
[Tutorial] Implementarea unui formular de login [Tutorial] Implementarea unui formular de login
Sa Hackeresti e un vis dar sa fi hackerit e cosmar
wWw.Invo4u.Lx.Ro
Sus
Vezi profilul utilizatorului Trimite mesaj privat Trimite un mesaj
Afiseaza mesajele pentru a le previzualiza:    Subiectul anterior : Subiectul urmator  
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului WwW.Hack-Library.MyForuM.Ro -> Tutoriale Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la:  
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

Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro