BluePink BluePink
XHost
Servere virtuale de la 20 eur / luna. Servere dedicate de la 100 eur / luna - servicii de administrare si monitorizare incluse. Colocare servere si echipamente de la 75 eur / luna. Pentru detalii accesati site-ul BluePink.
Warning: include(): Unable to access include/header.inc.php in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 13 Warning: include(include/header.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 13 Warning: include(): Unable to access include/header.inc.php in /home/www/dynamic/xhost.ro/documentatiephp.xhost.ro/public_html/cap4.php on line 13 Warning: include(include/header.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 13 Warning: include(): Failed opening 'include/header.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 13

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 formularuluiCum 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>

Numele si adresa de e-mail ale utilizatorului


Nume:

Adresa de e-mail:


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>

Numele
Prenumele
Varsta
Email
Mesajul
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