Guest dizzy Posted December 20, 2011 Share Posted December 20, 2011 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) 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. GETDatele 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 retrimitereCantitatea 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 dateRezultatul 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 preluateCaracterele 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)In PHP, elementele formularului sunt disponibile prin intermediul variabilei globale $_GET (sau prin $_REQUEST) POST Cantitatea de date ce poate fi transmisa prin POST poate fi restrictionata doar de catre serverul web, desi nu exista o limitare realaDatele transmise prin POST nu apar in URL si nu pot fi alterate usor, ceea ce ofera un oarecare grad de securitateIn 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 realeCodificarea 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 datelorIn 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. De ce conteaza tipul de formular? Este important sa se aleaga metoda corecta (POST sau GET) atunci cand:se realizeaza inserari in baza de date sau modificari pe serverse vor transmite cantitati mari de dateutilizatorii 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.