PHP - Prosleđivanje podataka preko HTML forme ($_POST)
Uvod
U prethodnom članku upoznali smo se sa opštim principima za razmenu podataka između PHP skripti, a glavna tema članka bila je upotreba superglobalne promenljive $_GET
. Na kraju smo pažnju posvetili razlikama između dva najpopularnija protokola za razmenu podataka (GET i POST), i zaključili smo da se protokol GET - zbog svoje otvorenosti - u praktičnom smislu ne sme koristiti za prosleđivanje osetljivih informacija.
Ovoga puta osvrnućemo se na postupak za prosleđivanje podataka preko protokola POST (i dalju obradu preko superglobalne promenljive $_POST
).
Superglobalna promenljiva $_POST
Podaci koji su osetljivi (ili jednostavno ne treba da postanu deo URL-a), PHP skriptama se prosleđuju preko HTTP protokola POST. *
U praktičnom smislu (pri izradi sajtova), prenos podataka podrazumeva upotrebu dve stranice:
- jedna stranica sadrži HTML formu preko koje će podaci biti učitani i prosleđeni
- druga stranica (PHP skripta), prima i obrađuje podatke
HTML forma
Za početak, kreiraćemo dokument index.php
(stranicu sa formom preko koje će podaci biti prosleđeni). *
Da pojasnimo i detalje sa kojima se do sada nismo susretali:
- atribut
method
(unutar taga<form>
), definiše način prosleđivanja podataka - atribut
action
određuje koja skripta će biti pokrenuta kada se klikne na dugmesubmit
** - tagovi
<input>
imaju definisane id-ove, međutim, svrha id-ova je povezivanje sa JavaScript-om i CSS-om (a ne sa PHP-om ili nekim drugim backend jezikom) - za definisanje budućih indeksa u okviru superglobalne promenljive
$_POST
, koristi se atributname
(sa odgovarajućim vrednostima iz različitih<input>
tagova)
Prijem i obrada podataka
Za obradu podataka koristićemo skriptu obrada.php
(onako kako je navedeno u HTML formi koju smo prethodno kreirali), pri čemu obe skripte, koje smo do sada kreirali, treba smestiti u isti folder.
Skripta obrada.php
ima sledeći sadržaj:
Kao što vidimo,osnovni princip prijema i obrade podataka (preko asocijativnih nizova), isti je kao kada smo koristili superglobalnu promenljivu $_GET
.
Takođe, buduće da i u ovom slučaju mogu nastati problemi ukoliko pokušamo da pristupimo indeksima koji nisu definisani (ili, ukoliko se desi da preko protokola POST ne budu uopšte prosleđeni podaci), potrebno je koristiti već poznati mehanizam provere, preko funkcije isset
:
Probajte, za vežbu, da sami kreirate skripte i prosledite podatke preko HTML forme.
Kratak rezime ....
Da rezimiramo ukratko:
- protokol POST koristi se (pre svega), onda kada treba preneti osetljive informacije (ili bilo koje druge podatke koji ne treba da postanu deo URL-a)
- u HTML formi praktično se definišu budući indeksi niza
$_POST
(preko atributaname
u<input>
poljima) - za proveru prisutnosti prosleđenih podataka (prilikom prijema podataka u PHP skripti za obradu), koristi se komanda
isset
U sledećem nastavku serijala o PHP-u, pisaćemo o povezivanju PHP skripti sa bazama podataka.