Home   FORUM   Toplista   HTML   CSS   JavaScript   PHP   DIZAJN   SEO   Mapa
KONTAKT
izuzetan[at]gmail.com






TOP LISTA SAJTOVA

POST i GET metode slanja i prihvata podataka

Postoje dve metode prosljeđivanja podataka HTML forme PHP dokumentu, i to su POST i GET metoda. Odabir metode prosljeđivanja podataka forme se vrši navođenjem u method argumentu <form> taga. Moguće vrednosti method argumenta zato su "post" ili "get".

Ako odaberemo metodu GET podaci forme se šalju kroz komandnu liniju query string, tj. iza znaka ? u adress baru brauzera. Odabirom metode POST podaci nisu vidljivi u komandnoj liniji već se šalju kroz header HTTP requesta, i time se na podatke ne može uticati izmenom linka u adress baru brauzera kao što to može biti slučaj sa GET metodom.

Postoji ograničenje na količinu podataka koji se mogu poslati putem GET metode. Ograničenje zavisi od postavke samog servera i varira od 256 bita do čak 32 Kb. Zato, ukoliko se radi o formi koja u sebi sadrži polja za unos velikih tekstova GET nije dobra metoda za prosljeđivanje informacija.

Kako se odlučiti koju metodu koristiti? Metoda koja se koristi za prosljeđivanje informacija zavisi o situaciji u kojoj se nalazite. Svaka metoda ima svoje vrline i mane. Rekli smo da se u GET metodi informacije lepe na sam URL, što ovu metodu čini idealnom u slučaju kada želite omogućiti posetiocima da spreme stranicu koju gledaju u svoje favorite, jer će spremiti URL zajedno sa zalepljenim query stringom. Primer ovoga bi bio Google i njihova tražilica koja sve podatke iz formi lepi u query string baš iz tog razloga. Sa druge strane GET je vrlo nesigurna metoda jer je posetilac vrlo lako može izmeniti, i to tako što jednostavno izmeni URL u adress baru svog browsera. Iz tog razloga nije preporučljivo koristiti ovu metodu za prosljeđivanje recimo usernamea i passworda u login formama i sličnih osetljivih informacija. U suštini neka striktna pravila u odabiru metode ne postoje. Jedino pravilo koje se mora poštovati je da se obavezno mora koristiti POST metoda kada se izrađuju upload forme.

Pogledajmo sad kompletan primer koji se sastoji od dva dela. Radi se o istoj formi, samo što se u slučaju a) koristi GET metoda, a u slučaju b) POST. Prvi ćemo nazvati forma.php, a drugi prihvat.php. Iz imena zaključujete da će se u forma.php nalaziti sama forma, a u prihvat.php će se nalaziti PHP skripta koja će prihvatiti te informacije i ispisati ih na ekran.

Primer a) Jednostavna forma pomoću GET metode. Dokument: forma.php

<html><head>
<title>Primer2 a) Prosleđivanje informacije GET metodom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head><body>
<h2>Prosleđivanje informacije GET metodom </h2><br><br>
<form method="get" action="prihvat.php">
Unesi svoje ime :<br>
<input name="ime" type="text" ><br>
<input name="submit" type="submit" value="Posalji">
</form>
</body></html>

Dokument: prihvat.php

<?
echo "Pozdrav".$_GET["ime"];
?>

Kao što vidimo method u argumentu je GET. Takodje smo u formu ubacili dva elementa, i to prvi:

<input name="ime" type="text">

A drugi gumb:

<input name="submit" type="submit" value="Pošalji">

U oba ova elementa forme obavezno je korišćenje "name" argumenta. Pomoću njega dajemo polju ime i to ime koristimo u PHP-u za prihvat podataka koji su uneseni u to polje. Ukoliko ne imenujete polje, podaci koji se unesu u njega nisu vidljivi PHP skripti za prihvat podataka iz te forme. Prihvat podataka je sam po sebi vrlo jednostavan. Unutar PHP-u postoje superglobalne varijable. To su varijable (nizovnog tipa) koje definiše sam PHP pri pokretanju svake skripte. Superglobalna promenjljive koja prihvata GET vrednosti je $_GET a superglobalna koja prihvata POST promenjljive je $_POST. $_GET je korišćena u prihvat.php dokumentu našeg primera:

echo "Pozdrav".$_GET["ime"];

Gornja linija ispisuje poruku u internet pregledniku koja se sastoji od konstantnog dela "Pozdrav" i dela u kome se ispisuje ono što je uneseno u text box polje u forma.php dokumentu. Iz ovog jednostavnog primera vidimo da se podacima iz forme pristupa pomoću odgovarajuće superglobalne promenjljive. Vrednost nekog elementa forme se nalazi unutar te superglobalne promenjljive na indeksu koji odgovara imenu tog elementa forme. U kojoj se superglobalnoj promenjljivoj nalaze podaci zavisi od izabrane metode prosljeđivanja podataka. U gornjem konkretnom primeru je metoda bila GET, tako da je korišćena superglobalna promenjljiva $_GET. Takodje primetite da su se podaci koje smo ispunili u forma.php dokumentu zalepili na link u prihvat.php dokumentu koji ispisuje te podatke. Na primer ako smo za ime napisali "Marko" onda će biti:

http://localhost/prihvat.php?ime=Marko&submit=Posalji

Sve iza znaka ? u gornjem linku se naziva QUERY STRING. Radi se o seriji parova imena i vrednosti međusobno odvojenim znakom &. Uzgred moguće je ovim načinom preneti podatke sa jedne stranice na drugu čisto putem linkova. Naime, PHP-u je svejedno da li se podaci u query stringu ubacuju putem neke forme, ili se radilo o tagu u kojem je u href argumentu napisan url skupa sa query stringom. Znači, ovo bi bio ekvivalent našoj formi iz primera, kada se u text box unese Marko

<a href="prihvat.php?ime=Marko">Marko</a>

Čak smo i izostavili drugu varijablu u query stringu pošto nam ona za sada nije potrebna u prihvat.php dokumentu.

U b) delu ovog primera koristćemo POST metodu, odnosno superglobalnu $_POST:

Dokument: forma.php

<html><head>
<title>Primer2 a) Prosleđivanje informacije GET metodom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head><body>
<h2>Prosleđivanje informacije GET metodom</h2>
<form method="post" action="prihvat.php">
Unesi svoje ime:<br>
<input name="ime" type="text" ><br>
<input name="submit" type="submit" value="Posalji">
</form>
</body></html>

Dokument: prihvat.php

<?
echo "Pozdrav ".$_POST["ime"];
?>

Princip prihvata podataka poslatih POST metodom je isti kao i kod prihvata podataka GET metode, sa razlikom što sada više nema query stringa i nije moguće direktno uticati na podatke nakon što je forma ispunjena i submitana.

Sada možemo napomenuti jednu zanimljivu činjenicu. Otvorite formu slučaja b), ispunite je i submitajte. Kada se otvori prihvat.php refreshujte stranicu. Sada bi vas brauzer trebao pitati da li želite opet poslati podatke forme stranici te morate odabrati potvrdnu akciju ukoliko želite opet videti prihvat.php. U slučaju da odaberete da ne želite opet poslati podatke dobijete error page (iako ovo zavisi o konfiguraciji samog brauzera). Sada pokušajte ovo isto učiniti za a) slučaj. Sada vas brauzer ništa ne pita već odmah prikazuje stranicu. Zbog ovoga je GET metoda puno praktičnija kada se rade forme za pretraživanje, jer svako dodatno klikanje pri surfanju kroz sajt samo može iznervirati posetioca. Takođe, kod search formi je dodatna, već spomenuta, prednost ta što se query string sprema zajedno sa URL-om u favorite surfera, tako da se može opet vratiti na isto pretraživanje nakon više dana jednostavnim odabirom bookmarka. Ova činjenica takođe dobro dođe kod debugiranja skripti za prihvat podataka forme. Ukoliko postoji greška u prihvat.php dokumentu možete je ispraviti u editoru u kojem pišete skriptu, te nakon što sačuvate izmene kliknete refresh u browseru i dokument će se prikazati ukoliko ste ispravili sve greške. Radi toga nije potrebno vratiti se na formu te je ponovo ispunite da bi testirali da li su sve greške ispravljene.

Copyright © 2010 BUbaj. Powered By bubaj.com
PHP    PHP sintaksa    Fajl    Niz    String    Funkcija    Objektno programiranje    MySQL    Unos fajla    Datum    Forme    Sesija    Registracija