Crearea formularelor HTML
Majoritatea programelor PHP folosesc formulare HTML pentru a prelua
datele de la utilizator si pentru a afisa rezultatele calculelor, în
cadrul acestui modul, veti învata sa creati formulare HTML care
permit programelor dumneavoastra HTML sa interactioneze cu utilizatorul.
Crearea structurii HTML
Structura HTML pe care o folositi pentru a include un formular nu este
deloc diferita, de fapt, de cea folosita pentru includerea unei pagini
HTML obisnuite. De exemplu, iata o structura caracteristica: <HTML>
<HEAD>
<TITLE>Titlul paginii este inserat aici</TITLE>
</HEAD>
<BODY>
Continutul paginii sau al formularului este inserat aici
</BODY>
</HTML> In interiorul corpului unei pagini HTML care contine un formular puteti
folosi orice eticheta HTML obisnuita. Pentru a descrie formularul în
sine, folositi eticheta FORM, care are urmatoarea forma elementara: <FORM METHOD="metoda" ACTION="url">
Atributul METHOD al etichetei FORM poate lua una din valorile GET sau
POST. Prin folosirea metodei GET toate datele din formular
sunt trimise scriptului care le prelucreaza prin atasarea acestora la
url-ul scriptului ; daca presupunem ca scriptul ceprelucreaza un formular
ce contine un user si o parola se afla la adresa http://www.server.ro/script.php
, prin folosirea metodei GET transmiterea datelor se realizeaza printro
cerele catre linkul: http://www.server.ro/script.php?utilizator=alin&parola=fdsgfda
Principalele dezavantaje ale acestei metode ar fi
- Limitarea cantitatii de informatie ce poate fi transmisa (un url nu poare fi oricat de lung )
- Transferul de date date prin atasarea sirurilor codificate la adresa URL a scriptului de prelucrare.
Astfel, datele trimise prin metoda GET pot fi vizualizate de catre utilizator , sau , in cazul in care spre exemplu
se foloseste un formular de logare bazat pe user si parola acestea pot fi inregistrate de diferite programe
( cum ar fi cele de contorizare a traficului unui site care tin evidenta linkurilor accesate sau a linkurilor referrer )
Metoda POST transmite datele fara ca acestea sa poata fi vizualizate
de catre utilizator si nu are restrictionare din punct de vedere al
cantitatii de informatie transmisa.
Pentru moment, specificati întotdeauna valoarea POST. Atributul
ACTION specifica adresa URL a scriptului PHP care prelucreaza datele
adunate prin intermediul formularului. Adresa URL poate fi o adresa
completa, care include protocolul, numele gazdei si calea de acces,
respectiv o adresa partiala, care specifica o locatie relativa la locatia
paginii curente . Intre eticheta FORM si eticheta sa /FORM corespunzatoare,
plasati controalele formularului.
Controalele formularului
Vom descrie descrie doua controale elementare pe care le veti folosi
frecvent: caseta cu text si butonul de expediere.
Ulterior , veti afla
mai multe despre controalele pe care le puteti folosi în constructia
formularelor HTML.
O caseta cu text permite utilizatorului sa tasteze informatii care pot
fi apoi trimise unui script PHP. Casetele cu text sunt frecvent folosite
pentru a obtine date precum numele utilizatorului, adresa sa postala
sau adresa de e-mail. Pentru a crea o caseta cu text, scrieti o eticheta
HTML care are urmatoarea forma elementara: <INPUT TYPE="TEXT" NAME="text"> Atributul NAME atribuie casetei cu text un nume, astfel încât
continutul sau sa fie accesibil (sa poata fi identificat ) in cadrul
unui script PHP. Numele pe care îl atribuiti unui control trebuie
sa fie unic în cadrul formularului si trebuie sa respecte regulile
pentru denumirea variabilelor PHP, cu exceptia faptului ca numele nu
trebuie sa înceapa cu simbolul dolarului. Cu alte cuvinte, numele
trebuie sa înceapa cu o litera si nu trebuie sa contina alte caractere
în afara literelor, a cifrelor si a caracterelor de subliniere;
în particular, numele nu trebuie sa contina spatii. HTML nu are
o eticheta /INPUT, deci nu încercati sa combinati o eticheta INPUT
cu o asemenea eticheta.
Un buton de expediere permite utilizatorului sa trimita serverului continutul
unui formular. Fiecare formular HTML trebuie sa aiba un buton de expediere.
Pentru a crea un buton de expediere, scrieti o eticheta HTML care are
urmatoarea forma elementara: <INPUT TYPE="SUBMIT" VALUE="text"> Atributul VALUE specifica textul care trebuie sa apara pe suprafata
butonului de expediere. Iata un formular HTML complet, care include casete cu text ce preiau
numele si adresa de e-mail a utilizatorului:
|
Codul sursa al formularului | Cum Arata Formularul |
<HTML>
<HEAD>
<TITLE>Numele si adresa de e-mail ale utilizatorului</TITLE>
</HEAD>
<BODY>
<FORM METHOD=”POST” ACTION=”exemplu_formular.php”>
<H3> Numele si adresa de e-mail ale utilizatorului</H3>
<BR>Nume:
<BR><INPUT TYPE=”TEXT” NAME=”numele_utilizatorului”>
<BR>Adresa de e-mail:
<BR><INPUT TYPE=”TEXT” NAME=”adresa_email”>
<BR>
<BR><INPUT TYPE=”SUBMIT” VALUE=”Trimite datele”>
</FORM>
</BODY>
</HTML>
|
|
|
Observati utilizarea etichetelor <BR> pentru alinierea etichetelor
si a controalelor, precum si numele atribuite controalelor de tip caseta
cu text. Când utilizatorul executa clic pe butonul de expediere,
datele introduse de utilizator sunt trimise scriptului phpinfo.php.
Ilustratia alaturata prezinta aspectul formularului Salvati codul sursa ai formularului intr-un fisier pe care il numiti formular.html
si deschideti-l in browser . Observati modul in care arata .
Salvati urmatorul cod php intr-ul fisier pe care il numiti exemplu_formular.php si
il salvati in acelasi director cu fomularul anterior .
<?
// se atribuie variabilei $numele_utilizatorului textul introdus
in casuta nume
$numele_utilizatorului=$_POST['numele_utilizatorului'];
// se atribuie variabilei$adresa_email textul introdus in casuta
adresa de email
$adresa_email=$_POST['adresa_email'];
//se afisaza datele introduse de catre utilizator:
echo "Adresa de email a utilizatorului $numele_utilizatorului
este $adresa_email ";
?> |
Deschideti in browser fisierul formular.html de pe serverul dumneavoastra . ( http://localhost/formular.html ) ,
completati datele din formular si apasati butonul pentru transmiterea informatiilor .
Informatiile specificate de dumneavoastra sunt transmise scriptului PHP iar rezulatatul executarii acestuia ,
presupunand ca ai introdus in casuta numele_utilizatorului Alin
si la adresa_email alin@server.com va fi :
|
Adresa de email a utilizatorului Alin este alin@server.com
|
In exemplul de mai sus pentru a receptiona datele introduse de utilizator am folosit
$_POST['nume_camp_din_cadrul_formularului']
deoarece pentru transmiterea formularului am folosit metoda POST.
In cazul in care am fi folosit metoda GET ar fi trebuit sa folosim
$_GET['nume_camp_din_cadrul_formularului']
In continuare vom da un exemplu mai complicat . Vom construi un formular de contact mai complex
cu ajutorul caruia vom receptiona informatii de la utilizatori iar informatiile primite le vom
trimite la o adresa de email ( adresa webmasterului spre exemplu).
Codul sursa al formularului Salvati acest continut intr-un fisier numit contact.html |
Cum Arata Formularul |
| <form method=POST action=contact_us.php> <table border=0> <tr> <td> Numele </td><td><input type=text name=nume></td></tr><td> Prenumele</td><td><input type=text name=prenume></td></tr><td> Varsta</td><td><input type=text name=varsta></td></tr><td> Email</td><td><input type=text name=email></td></tr><td> Mesajul</td><td><textarea name=mesaj cols=20 rows=15></td></tr><td> <td colspan=2 align=center> <input type=submit value="Transmite
mesajul"> </td></tr></table> </form> |
|
|
Continutul salvati urmatorul continut intr-un fisier pe care il denumiti contact_us.php si il salvati in acelas folder cu formularul anterior:
<?
// se atribuie variabilei $nume textul introdus
in casuta nume
$nume=$_POST['nume'];
// se atribuie variabilei $prenume textul introdus
in casuta prenume
$nume=$_POST['prenume'];
// se atribuie variabilei $varsta textul introdus
in casuta varsta
$varsta=$_POST['varsta'];
// se atribuie variabilei $email textul introdus
in casuta email
$email=$_POST['email'];
// se atribuie variabilei $mesaj textul introdus
in casuta nume
$mesaj=$_POST['mesaj'];
// verificam daca utilizatorul a completat campul mesaj (daca ne contacteaza trebuie sa ne transmita un mesaj , nu ? )
if($mesaj=='')
{
echo "Trebuie sa scrieti un mesaj daca doriti sa ne contactati .<br> " ;
echo "Va rugam apazati butonul <b> Back </b> al browserului dumneavoastra si corectati .";
//dupa ce afisam mesajul intrerupem executia
exit() ;
}
// verificam daca utilizatorul a completat campul email (daca dorim sa ii raspundem la mesaj trebuie sa stim unde ii trimitem raspunsul )
if($email=='')
{
echo "Trebuie sa ne comunicati adresa de email la care sa va transmitem eventualul raspuns ";
echo "Va rugam apazati butonul <b> Back </b> al browserului dumneavoastra si corectati .";
//dupa ce afisam mesajul intrerupem executia
exit() ;
}
// verificam daca adresa de email introdusa are formatul corect
// pentru inceput vom face o verificare sumara (doar daca adresa contine caracterele @ si . )
if($email==str_replace("@","",$email)||$email==str_replace(".","",$email)) {
echo "Adresa de email introdusa nu are un format valid ";
echo "Va rugam apazati butonul <b> Back </b> al browserului dumneavoastra si corectati .";
//dupa ce afisam mesajul intrerupem executia
exit() ;
}
// daca am ajuns aici (daca nu s-a intrerupt executia din cauza erorilor)
// vom trimite emailul
if(mail("webmaster@mailserver.com","Contact From WebForm","$mesaj","From: $nume $prenume <$email>\r\n")) {
echo "Mesajul a fost transmis cu succes. <br>" ;
echo "Va vom contacta in cazul in care este necesar" ;
}
else {
echo "Regretam insa la transmiterea mesajului a aparut o eroare";
}
?> |
In exemplul de mai sus am folosit functia str_replace() care are urmaorul format:
str_replace("sir_1","sir_2","$sir_3");
unde :
sir_1 este sirul de caractere ce trebuie inlocuit
sir_2 este sirul de caractere cu care se inlocuieste sir_1
sir_3 este sirul de caractere in interiorul caruia se face inlocuirea
De exemplu:
<?
$sir_1="Alexandru merg";
$sir_2="Vladut inoata";
$sir_3="Maria , Ionut si Alexandru merg vara la mare";
str_replace("$sir_1","$sir_2","$sir_3");
echo "$sir_3";
?>
|
De precizat faprul ca daca $sir_2="" , adica daca nu contine nimic , rezultatul este stergerea din $sir_3 a sirului de caractere $sir_1.
Executarea codului de mai sus va avea ca rezultat afisarea urmatorului text:
|
Maria , Ionut si Vladut inoata vara la mare
|
O demonstratie despre modul in care funtioneaza acest formular si programul php puteti vedea completand formularul de mai sus insa va apare o eroare
la transmiterea emailului deoarece pe serverul xhost pe care este gazduit acest site functia mail() nu este activa din motive de securitate.
Detalii depre modul in care se pottransmite emailuri de pe serverul xhost gasiti pe forumul xhost .
Continuarea va fi disponibila foarte curand
Warning: include(): Unable to access include/footer.inc.php in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 349
Warning: include(include/footer.inc.php): failed to open stream: No such file or directory in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 349
Warning: include(): Unable to access include/footer.inc.php in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 349
Warning: include(include/footer.inc.php): failed to open stream: No such file or directory in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 349
Warning: include(): Failed opening 'include/footer.inc.php' for inclusion (include_path='.:/usr/share/php5:/usr/share/php:/home/www/lib:/home/www/lib/pear:/home/www/lib/pear/DB') in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 349
|