Invata PHP cu punctsivirgula.ro

I. Introducere
II. Notiuni de baza
III. Notiuni avansate
IV. Aplicatii
V. Extra
C O N T I N U T
GET vs. POST

Formulare POST si GET

Asa cum am vazut in lectia anterioara exista 2 tipuri de formulare. Din punctul de vedere al utilizatorului final (cel care foloseste browser-ul si completeaza formularul pentru a transmite date catre server) metoda folosita (POST vs. GET) nu conteaza prea mult, in sensul ca modul de transmitere al datelor este transparent. Din punctul de vedere al celui care construieste formularul si care prelucreaza datele primite pe server (folosindu-se de un script PHP) exista diferente notabile ce trebuie luate in calcul.



Cum determin ce tip de formular trebuie sa folosesc (GET sau POST)?    1 ! 

Cele 2 tipuri de formulare prezinta fiecare avantaje si dezavantaje. Mai jos sunt prezentate cateva dintre caracteristicile fiecarui tip. In general, avantajul formularelor POST este acela ca pot manipula cantitati mari de date iar al formularelor GET ca sunt usor de folosit/retrimis.


GET

  1. Datele transmise catre server prin GET apar la finalul URL-ului, asa cum au fost introduse; acest lucru ar putea fi un dezavantaj cand este vorba de date senzitive, dar ajuta la modificarea usoara a datelor pentru retrimitere
  2. Cantitatea de date GET depinde de lungumea maxima permisa a URL-ului, care in Internet Explorer este de 2 083 caractere. Asadar prin GET nu se pot transmite prea multe date
  3. Rezultatul unui request GET poate fi preluat din cache-ul browser-ului sau al proxy-ului web. Trebuie ca URL-ul sa fie diferit la fiecare request nou pentru a fi siguri ca datele reale sunt preluate
  4. Caracterele speciale pot fi codificate folosind atributul enc-type al formularului; dezavantajul este ca aceasta codificare va reduce cantitatea de date ce pot fi transmise (ex. 3 caractere japoneze sunt reprezentate cu ajutorul a 42 caractere normale: %26%2312454%3B%26%2312455%3B%26%2312502%3B)
  5. In PHP, elementele formularului sunt disponibile prin intermediul variabilei globale $_GET (sau prin $_REQUEST)

POST

  1. Cantitatea de date ce poate fi transmisa prin POST poate fi restrictionata doar de catre serverul web, desi nu exista o limitare reala
  2. Datele transmise prin POST nu apar in URL si nu pot fi alterate usor, ceea ce ofera un oarecare grad de securitate
  3. In mod implicit, datele preluate prin POST nu sunt puse in cache-ul de la browser sau proxy-server; astfel folosind aceasta metoda vor fi afisate intotdeauna datele reale
  4. Codificarea caracterelor speciale se poate realiza ca si la GET folosind atributul enc-type al formularului (application/x-www-form-urlencoded); avantajul este ca nu exista limitari de cantitate a datelor
  5. In PHP, elementele formularului sunt disponibile prin intermediul variabilei globale $_POST (sau prin $_REQUEST)

Pe langa considerentele de mai sus, trebuie avuta in vedere si o recomandare generala: GET ar trebui folosit pentru operatiile care nu modifica nimic pe server, in timp ce POST ar trebui folosit pentru operatiile de modificare/actualizare/stergere.

Spre exemplu, atunci cand se face o cautare intr-o baza de date si (doar) se afiseaza niste rezultate, ar trebui folosit un formular GET. De asemenea, cand se realizeaza verificari ce nu au ca efect modificarea bazei de date sau a vreunui fisier de pe server, se poate folosi tot GET. Atunci cand, in schimb, trebuie facute modificari se recomanda folosirea metodei POST.

Mai mult decat atat, pentru a evidentia tendinta de folosire a POST pentru modificari de date, browserele afiseaza o avertizare cand se incearca reimprospatarea (refresh-ul) paginilor aceesate prin POST. Astfel, se cere confirmarea utilizatorului ca datele introduse sa fie trimise din nou catre server. Aceasta confirmare este necesara pentru a evita efectuarea unor tranzactii (cum ar fi plati on-line) de doua sau mai multe ori.

Portiuni din acest text au fost preluate cu permisiunea autorului, de la http://weblogs.asp.net/mschwarz/archive/2006/12/04/post-vs-get.aspx.

catalin a spus problema - 05.09.2011

O intrebare! Cum pot sa fac pe un site o pagina de login prin care fiecare utilizator poate avea o pagina personala dupa ce se logheaza? adica se logheaza si doar el isi poate vedea pagina. Multumesc.


Adauga un comentariu la aceasta sectiune.

 


De ce conteaza tipul de formular?    0 ! 

Este important sa se aleaga metoda corecta (POST sau GET) atunci cand:

  • se realizeaza inserari in baza de date sau modificari pe server
  • se vor transmite cantitati mari de date
  • utilizatorii pot sa modifice usor datele transmise (cum ar fi un cuvant de cautat)
  • utilizatorii trebuie informati/atentionati atunci cand retrimit aceleasi date catre server (NB: la metoda POST, browser-ul afiseaza o notificare atunci cand se incearca Refresh)
  • este important ca datele afisate sa nu fie preluate din cache (POST)

Fiecare situatie in care este necesar un formular ar trebui analizata pentru a determina tipul de metoda care trebuie folosita. In practica metoda POST se foloseste la formulare de inregistrare/login, formulare de contact sau de plati online, formulare de upload si altele, in timp ce metoda GET este folosita pentru formulare simple de confirmare, de cautare, de abonare/dezabonare la un newsletter, s.a.

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.