Utilizare formulare HTML cu PHP, $_GET si $_POST

1. Proiectarea unui formular

Principalele sarcini în proiectarea unui formular HTML le constituie alegerea controalelor HTML care vor fi incluse în formular, selectarea amplasamentului controalelor si alegerea numelui acestora.
Studiati lectia HTML despre Formulare, aceasta explica modul de realizare a fiecarui obiect dintr-un formular HTML si va va ajuta sa invatati rolul acestor elemente HTMLL.

2. Crearea unui formular

Un formular HTML trebuie sa contina un buton de expediere, submit, pe care utilizatorul executa clic pentru a trimite datele din formular la scriptul PHP.
Formularele se creaza folosind etichete specifice incadrate in tag-ul <form> </form> ca in exemplul de mai jos:

<form action="script.php" method="post">
Nume:<input type="text" name="nume" />
<br /><input type="submit" name="submit" value="Trmite formular" />
</form>

In browser se va vedea:

Nume:

Fiecare element al formularului trebuie introdus intre etichetele <form> si </form>.
Atributul "action" indica fisierul cu scriptul care va primi datele de la formular si reprezinta una dintre cele mai importante precizari.
Fiecare element, camp dintr-un formular trebuie sa aibe un nume distinct, dat prin atributul "name"; acest nume este folosit de scriptul PHP la care sunt trimise datele, astfel, scriptul PHP recunoaste datele din campul respectiv folosind numele acestuia.

3. Utilizarea metodelor GET si POST

Atributul "method" poate avea doua valori : GET si POST. Diferenta intre metodele GET si POST consta in modul in care informatia din formular este transmisa scriptului care o prelucreaza.
- Metoda GET trimite toate informatiile adunate ca parte a adresei URL; aceste informatii sunt vizibile pentru utilizator.
- Metoda POST transmite informatia intr-o maniera invizibila pentru utilizator si poate transmite o cantitate mai mare de date decat GET.
Folosind exemplul de formular de mai sus, metoda GET va transmite serverului o adresa URL ca cea de mai jos:

iar in cazul folosirii metodei POST, in URL va aparea doar: Metoda GET permite transmiterea unui volum limitat de informatii catre server; de asemenea nu este recomandata folosirea acestei metode in cazul in care dorim sa transmitem date personale(de exemplu parolele introduse intr-un formular pot fi vizualizate de oricine in browserul de Web).

4. Receptionarea datelor de la un formular HTML

In general datele din formular sunt preluate de scriptul PHP prin urmatoarea formula:

- unde "nume este valoarea atributului name al elementului din formularul HTML.

Sa luam un exemplu practic de formular HTML care trimite date (prin method="post") la un script PHP unde acestea vor putea fi vizualizate.
Salvam scriptul de mai jos intr-un fisier pe care-l numim "test-form.php"

<?php
$nume = $_POST['nume'];
$email = $_POST['email'];
$parola = $_POST['parola'];

echo "Nume = $nume";
echo "<br />E-mail = $email";
echo "<br />Parola = $parola";
?>
Scriem urmatorul cod HTML intr-un alt fisier "form.html", pe care-l salvam in acelasi director cu scriptul PHP de mai sus.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title> Test-Form </title>
</head>
<body>
<form action="test-form.php" method="POST">
Nume:<input type="text" name="nume" />
<br />Email:<input type="text" name="email" />
<br />Parola:<input type="password" name="parola" />
<br /><input type="submit" name="submit" value="Trmite datele" />
</form>
</body>
</html>
In browser va aparea:

Nume:
Email:
Parola:
Completam datele din formular, de exemplu: la Nume : Popescu, la Email : plomar@uv.ro si Parola : parola_mea
Dupa ce am competat datele, apasam clic pe butonul "Trimite datele", acestea vor fi trimise la scriptul PHP "test-form.php", care le va prelucra si va afisa urmatorul rezultat:
Nume = Popescu
E-mail = plomar@uv.ro
Parola = parola_mea

Sa intelegem exemplu de mai sus.
Folosind formularul de mai sus, atributul NAME din fiecare eticheta INPUT atribuie fiecarei casete cu text un nume, astfel scriptul PHP va putea recunoaste datele scrise in casete. In scriptul "test-form".php" vom accesa variabilele:

Deoarece cunoastem metoda prin care trimitem datele catre scriptul PHP, "POST", am folosit variabila PHP globala _POST pentru a prelua datele din formular: Constructia echo trimite datele de iesire care vor fi afisate de browser

Variabile PHP globale: _GET si _POST reprezinta de fapt variabile de tip array, fiecare element se poate accesa prin cheia sa; in cazul nostru cheia fiecarui element este data de atributul : NAME al casetelor din formular

5. Trimiterea de date unui script prin adresa URL

In afara de a expedia unui script datele printr-un formular, puteti expedia date cu ajutorul adresei URL a paginii. Pentru aceasta, atasati la sfarsitul adresei URL un semn al întrebarii (?) si apoi includeti o serie de perechi "nume-valoare" (separate prin &), ca in exemplu urmator:

Exemplul include numai doua perechi "nume-valoare"; cu toate acestea, puteti include oricâte asemenea perechi doriti (separate prin caracterul &), in functie de limita impusa de browser.
Pentru a prelua si folosi datele dintr-o astfel de adresa URL, folositi in interiorul scriptului PHP expresia "$_GET['nume'], ca in exemplu urmator" Unde "nume1" si "nume2" sunt numele variabilelor din adresa URL, iar "$var1" si "$var2" sunt variabilele care vor fi folosite in scriptul PHP (din "fisier.php") si a caror valori vor fi "valoare1" respectiv "valoare2" continute in adresa URL.

Daca doriti sa trimiteti unui script, prin intermediul adresei sale URL, caractere speciale precum un semn al intrebarii, un semn egal sau un ampersand, se poate crea confuzie.
Pentru a functiona corect, un sir trebuie sa fie codificat URL. Pentru a codifica URL un sir, caracterele speciale se înlocuiesc cu echivalentele lor hexazecimale, precedate de un simbol procent (%). Pentru alte detalii, consultati lectia despre Utilizarea caracterelor speciale, subtitlul 4 ( Conversia adreselor URL).
De exemplu, forma codificata URL a sirului "la multi ani!" este %22la multi ani%21%22.
Adresa URL rezultanta se numeste "sir de interogare" si nu poate contine spatii. Daca doriti sa trimiteti un spatiu ca parte a unui sir de interogare, trimiteti în locul spatiului un semn plus (+). Iata un exemplu de sir de interogare care codifica numele autorului acestui site:

Unele dintre cele mai comune caractere speciale si echivalentele lor codificate URL sunt prezentate în tabelul de mai jos:
Caracter special Echivalentul codificat URL
. *%2e
> %3e
^ %5e
~ %7e
+ %2b
, %2c
/ %2f
: %3a
; %3b
  %3c
= %3d
> %3e
[ %5b
\ %5c
] %5d
_ %5f
{ %7b
| %7c
} %7dc
tab %09
spatiu %20
! %21
%22
# %23
$ %24
% %25
& %26
` %27
( %28
) %29
@ %40
` %60
Variabile si operatori <<-- Anterior --- Urmator -->> Variabile de mediu si ...

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a crea o caseta de adaugare text?
<form> <input> <div>
<input type="text" name="a_name" value="val" />
Ce proprietate CSS se foloseste pentru a afisa textul cu majuscule-mici?
display font-variant font-style
h3 {
  font-variant: small-caps;
}
Ce instructiune afiseaza o fereastra cu un mesaj in ea?
for() Date() alert()
var msg = "Viziteaza CoursesWeb.net";
alert(msg);
Indicati codul PHP prin care se obtine IP-ul utilizatorului.
$_SERVER["HTTP_USER_AGENT"] $_SERVER["REMOTE_ADDR"] $_GET[]
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
Cum se traduce cuvantul "actually"?
actual de fapt acum
He actually came on time.
- De fapt, el a venit la timp.
Cum se traduce expresia: "Hace buen tiempo"?
Face timp E vreme frumoasa Drum bun
Hoy hace buen tiempo.
- Astazi e vreme frumoasa.
Utilizare formulare HTML cu PHP, $_GET si $_POST - Tutorial PHP