Formular de login in PHP
Mai jos este un exemplu de formular ce poate fi folosit pentru autentificarea (logarea) utilizatorilor. Deocamdata nu contine decat elementele de baza si verificari simple, tocmai pentru a evidentia modul de lucru cu formulare in PHP. Codul contine comentarii in care sunt explicati pasii urmariti.
In mare, sunt executati urmatorii pasi:
- se verifica daca a fost facut submit
Ar putea fi putin derutant faptul ca portiunea de cod PHP se afla in acelasi fisier cu formularul HTML. Intrebarea fireasca ar fi: "nu se executa prelucrarea datelor cand de fapt trebuie doar sa afiseze formularul?" sau altfel spus "cum stie serverul cand sa prelucreze datele din formular?".
Ideea este ca acea portiune de cod PHP se executa la fiecare afisare a paginii. De fapt nu toata, ci doar prima parte. Cand se incarca pagina (in urma unui click sau refresh), pe langa codul HTML static se returneaza si rezultatul codului PHP. In cazul nostru, codul PHP consta in 2 atribuiri de variabile si un if mare. Atribuirile se executa mereu (la fiecare afisare), la fel si if-ul, doar ca rezultatul comparatiilor este adevarat doar atunci cand datele din formular au fost trimise.
Cu alte cuvinte, acel if va fi evaluat true doar cand utilizatorul da submit la formular - deci prelucrarea datelor se va face doar dupa ce utilizatorul face click pe "Login".
- daca nu a fost facut submit, e simplu: pur si simplu afiseaza codul HTML static si ce mai este prin script (rezultatul va fi un formular).
Dupa ce s-a incarcat pagina, utilizatorul va putea introduce datele in formular si va putea da submit. Atunci cand se da submit, se face un request POST catre aceeasi pagina si se executa inca o data codul PHP din cadrul fisierului, de aceasta data insa cu informatiile actualizate
- cand se face submit, se intra pe ramura lui if unde se executa mai multe operatii (in cazul nostru doar 2)
Nota: este foarte important sa se inteleaga mersul lucrurilor, cum este tratata pagina in fiecare situatie si cum se ajunge sa se execute fiecare portiune de cod. Daca aceste aspecte nu sunt clare nu veti putea scrie formulare de unii singuri.
Continuand cu explicarea codului, iata care sunt operatiile care se executa:
- se valideaza datele (se verifica daca au fost introduse valori): if( !isset( $_POST[ 'user' ] ) ...
- se verifica daca numele de utilizator si parola sunt corecte: if( $erori == 0 ) ...
Daca sunt corecte, atunci se face o redirectionare catre o pagina ce poate fi accesata dupa autentificare. Redirectionarea se realizeaza folosind etichete HTML, desi exista o modalitate mai eleganta de a o realiza (dupa cum veti vedea in lectia Headere).
Codul este expus mai jos. Aveti si posibilitatea sa descarcati scriptul (mai jos) si sa-l incercati pe serverul vostru local.
<?php # username si parola $user_corect = 'admin'; $parola_corecta = 'ghiceste-Ma'; # verific daca se acceseaza pagina ca urmare a unui request POST $mesaj = ''; if( isset( $_POST ) && !empty( $_POST[ 'trimite' ] ) ) { # nota: se va intra pe ramura aceasta a lui if atunci cand utilizatorul # face click pe butonul "Login" # Atunci cand pagina este accesata normal (scriind adresa in browser) # variabila $_POST este goala $erori = 0; # validam datele, presupunem ca nu sunt erori si verificam valoarile introduse if( !isset( $_POST[ 'user' ] ) || strlen( $_POST[ 'user' ] ) == 0 ) { $mesaj = 'Numele de utilizator nu a fost specificat'; $erori = 1; } elseif( !isset( $_POST[ 'pass' ] ) || strlen( $_POST[ 'pass' ] ) == 0 ) { $mesaj = 'Parola nu a fost specificata'; $erori = 1; } # daca nu au fost erori, atunci fac prelucrarile if( $erori == 0 ) { # pentru acum, vom face o verificare simpla if( $_POST[ 'user' ] === $user_corect && $_POST[ 'pass' ] === $parola_corecta ) { # login realizat, redirectionez echo 'Ati fost autentificat. Veti fi redirectionat...'; exit; # nu mai afisez nimic altceva } else { # nu s-a facut login $mesaj = 'Username-ul sau parola sunt gresite'; } } } ?> <html> <head> <title>Aplicatie formular: pagina de login - Invata PHP</title> </head> <body style="font-family: verdana,sans-serif; font-size: small;"> <form action="" method="post" style="width: 30%"> <fieldset> <legend>Date de autentificare</legend> <input type="text" name="user" /> User<br /> <input type="password" name="pass" /> Pass<br /> </fieldset> <fieldset> <legend>Actiuni</legend> <input type="submit" value="Login" name="trimite" value="1" /> <input type="reset" value="Curata formular" /> </fieldset> </form> <?php # aici afisam mesajul de eroare, daca avem if( strlen( $mesaj ) > 0 ) { echo '<p style="color: red">', $mesaj, '</p>'; } ?> </body> </html>
Formularul este disponibil pentru testare aici (click pentru a accesa). Introduceti diferite valori pentru a verifica functionalitatea, iar in final introduceti datele corecte (admin / ghiceste-Ma).
Descarcati fisierul PHP si incercati-l pe serverul vostru
Formulare "in real life" - exemple de site-uri care folosesc formulare
Mai jos sunt incluse o serie de formulare folosite in site-uri live. Veti fi surprinsi poate sa observati ca majoritatea site-urilor folosesc formulare si ca o mare parte din activitatea de navigare pe internet presupune folosirea formularelor.
La randul vostru, ca dezvoltatori web, voi insiva veti construi foarte des formulare si veti scrie codul de prelucrare/manipulare a datelor provenite din formulare.
Exemplele de mai jos nu prezinta decat partea formala, codul HTML al formularelor. Partea de programare (codul efectiv care face prelucrarea) nu este disponibila, fiind gazduita de fiecare site in parte. Rolul acestor exemple este de a va da o idee despre cum sunt folosite formularele si cu ce ocazii, ce elemente sunt intrebuintate si care este comportamentul browserului pentru fiecare tip de formular (GET/POST).
Formular de cautare folosind motorul Bing
<form id="form_bing" action="http://www.bing.com/search" method="get"> Expresie de cautat:<br /> <input type="text" name="q" value="" /> <input type="submit" value="Cauta pe Bing" /> </form>
Analog se poate construi un formular pentru Google. Practic, trebuie schimbat decat atributul action din formular (pus URL-ul specific Google: http://www.google.com/search), intrucat cele doua motoare de cautare accepta acelasi parametru GET (numit simplu q) pentru textul de cautat.
Formularul de cautare este disponibil mai jos:
Formular de cautare in documentatia PHP
<form id="form_php" action="http://ro.php.net/manual-lookup.php" method="get"> Cauta functia PHP sau un cuvant:<br /> <input type="text" name="pattern" value="" /> <input type="submit" value="Cauta" /> </form>
La fel ca mai sus, formularul foloseste metoda GET, ceea ce ofera o facilitate: utilizatorul poate introduce singur, in URL, textul de cautat. Dati Cauta si verificati adresa paginii care se deschide.
Formularul de cautare este disponibil mai jos:
Formular de conversie valutara din EUR in RON
<form id="form_xe" action="http://www.xe.com/ucc/convert.cgi" method="get" > <fieldset> <legend>Suma de convertit</legend> <input type="text" name="Amount" value="10" style="width: 100px" /> </fieldset> <fieldset> <legend>Moneda</legend> <input type="text" name="From" value="EUR" style="width: 100px" /> - moneda sursa<br /> <input type="text" name="To" value="RON" style="width: 100px" /> - moneda in care se face conversia<br /> </fieldset> <fieldset> <input type="submit" name="image" value="Convertire" /> </fieldset> </form>
Formularul de conversie este disponibil mai jos:
Formular de cautare locuri de munca pe site-ul ejobs.ro
<form action="http://www.ejobs.ro/user/searchjobs" id="searchjob" method="post" > <input type="hidden" value="" name="refine"/> <input type="hidden" value="" name="allof"/> <table cellspacing="0" cellpadding="0" border="0" > <tr> <td valign="middle" style="padding-left: 3px;"><span>Locuri de munca:</span></td> <td valign="middle" style="padding-left: 9px;" rowspan="5"> <input type="submit" value="Cauta Job >>" name="cauta_job" /> </td> </tr> <tr> <td valign="middle" style="padding-left: 3px;"> <input onclick="if (this.value=='Cuvant cheie') {this.value='';}" style="width: 210px;" name="jobskeyword" value="Cuvant cheie" /> </td> </tr> <tr> <td valign="middle" style="padding-left: 3px;"> <select style="width: 210px;" name="oras"> <option value="">Toate orasele</option> </select> </td> </tr> <tr> <td valign="middle" style="padding-left: 3px;"> <select style="width: 210px;" name="categ"> <option value="">Toate departamentele</option> </select> </td> </tr> <tr> <td valign="middle" style="padding-left: 3px;"> <select style="width: 210px;" name="nivel_cariera"> <option value="">Orice nivel de cariera</option> </select> </td> </tr> </table> </form>
Acesta este un formular putin mai cuprinzator. Contine mai multe tipuri de elemente, inclusiv de tip ascuns (hidden). Aceste sunt folosite pentru a transmite anumite informatii care nu trebuie in mod necesar sa fie accesibile utilizatorilor. Elementele hidden sunt accesibile ca orice alt input, prin intermediul variabilei $_POST.
Formularul de la eJobs foloseste metoda POST. Ca urmare datele introduse nu apar in URL si nu pot fi modificate imediat. Mai mult, la refresh pe pagina de rezultate o sa apara acea avertizare care cere confirmarea ca datele introduse sa fie trimise inca o data la server.
Formularul este disponibil mai jos:
Daca va intereseaza un anumit tip de formular, sau vreti un exemplu anume legat de formulare, astept sa lasati comentariu si voi incerca sa-l pun pe site.
Autor, vreau sa ma contactezi ca am multe intrebari si e singurul tutorial de php pe care l-am gasit..nu l-am citit tot dar am niste intrebari sa-ti spun..am pus mailul pe care sper ca il poti vedea...multumesc
Vreau eu o pagina care sa arate un text intr-un tabel care sa fie modificat dintr-un panou de control...asta ca sa vad cum se face unul
Multumesc
As vrea sa fac un formular cu cateva campuri in care sa editez ceva , si sa apara in acea pagina sub forma de tabel
Ex: nume , Localitate , nr de casa , telefon .
V-as fi foarte recunoscator daca as face asa ceva
( normal , accesul cu parola )
Adauga un comentariu la aceasta sectiune.
Nimic de afisat.
Adauga un comentariu la aceasta sectiune.