Tehnička škola Požega

  • Povećaj veličinu slova
  • Normalna veličina slova
  • Smanji veličinu slova
Početna

Slanje i prihvat podataka

Slanje i prihvat podataka

Poslati podatke s jedne stranice te prihvatiti i obraditi na drugoj (a možda i istoj) je osnova većine web aplikacija, a nije ni tako komplicirano kao što možda pretpostavljate. Pokazat ćemo i na primjeru, no za početak malo teorije...

Podaci za slanje

Podaci koji se šalju su u stvarnim situacijama najčešće posljedica korisnikove interakcije sa stranicama. Najčešći primjer je korisnikovo ispunjavanje obrazaca na stranicama ili klik na neki link.
Za slanje podataka sa stranice u stvari nam i ne treba PHP. Obrazac koji šalje podatke sa stranice možemo napraviti u čistom HTMLu , zato u Dreamweaveru uključite gornji horizontalni izbornik Forms koji sadrži naredbe za ubacivanje obrazaca i njihovih elemenata.

Podaci se sa stranice na stranicu mogu slati jednom od dvaju slijedećih metoda:

  • POST metodom i
  • GET metodom

Metoda se zadaje kao parametar taga za obrazac. Evo primjera kako izgleda tag form:

<form id="form1" name="form1" method="post" action="php1.php">

id obrasca je potreban javascriptu i obično ga zadajemo isto kao i nazivobrasca - name. Slijedi parametar method gdje može pisati "get" ili "post". Nakon njega slijedi parametar action gdje je potrebno upisati adresu stranice koja prihvaća podatke (ta se stranica otvara kad korisnik pošalje podatke). Ove parametre i ne morate zadavati direktno u kodu, odabreite obrazac u Dreamweaveru i možete ih zadati kroz Properties panel.

GET metoda

GET metoda je prikladna za slanje manje količine podataka koji ne zahtjevaju nikakvu tajnost. To proizlazi iz načina rada preglednika kad se podaci tako šalju, naime svi podaci su vidljivi u adresnoj traci preglednika na slijedeći način:

url_stranice_koja_prihvaća_podatke?varijabla1=vrijednost1&varijabla2=vrijednost2

Naravno može se slati i više od dva podatka.

Primjer: Imamo stranicu login.html i na njoj elemente obrasca ime i lozinka te dugme pošalji. Stranica šalje podatke stranici login.php GET metodom. Kad korisnik pošalje podatke, otvara se stranica login.php, a u adresnoj traci preglednika vidjet će se slijedeće:

http://localhost/webgrupa/datoteke/php1.php?ime=Pero&lozinka=aaaa&posalji=Po%B9alji

Iz ovog bilo tko može vidjeti da je korisnik za ime zadao Pero, a za lozinku aaaa.

POST metoda

POST metoda prikladnija je za slanje veće količine podataka ili podataka koji zahtijevaju tajnost. Podaci nisu vidljivi u adresnoj traci preglednika
Treba napomenuti da sama POST metoda ako se koristi na ovakav način ne uklučuje nikakvu zaštitu podataka prilikom slanja, to se može ostvariti npr korištenjem sigurnih protokola (https).

Primjer

Izradit ćemo stranicu za demonstraciju. Gotov uradak možete vidjeti ovdje, a kompletnu stranicu skinuti na svoje računalo odavde.

Kod

Koda ima podosta pa donosimo samo ono unutar <body> tagova:

<form id="form1" name="form1" method="get" action="php1.php">
<label>ime
<input name="ime" type="text" id="ime" size="40" maxlength="40" />
</label>
<p>
<label>grad
<select name="grad" id="grad">
<option value="0"></option>
<option value="Zagreb">Zagreb</option>
<option value="Požega">Požega</option>
</select>
</label>
</p>
<fieldset>
<legend>spol</legend>
<p>
<label>
<input type="radio" name="spol" id="spol" value="m" />
M</label>
<label>
<input type="radio" name="spol" id="spol2" value="z" />
Ž</label>
</p>
</fieldset>
<fieldset>
<legend>status</legend>
<p>
<label>
<input name="nezaposlen" type="checkbox" id="nezaposlen" value="da" />
nezaposlen</label>
</p>
<p>
<label>
<input name="ucenik" type="checkbox" id="učenik" value="da" />
učenik</label>
</p>
</fieldset>
<p>
<label>
<input name="bio" type="hidden" id="bio" value="da" />
<input type="submit" name="posalji" id="posalji" value="Pošalji" />
</label>
</p>
</form>

<?php
$bio=$_GET['bio'];
$ime=$_GET['ime'];
$grad=$_GET['grad'];
$spol=$_GET['spol'];
$nzp=$_GET['nezaposlen'];
$uc=$_GET['ucenik'];
if($bio=="da"){
echo"<h3>Poslali ste slijedeće podatke:</h3>";
echo"<p>Ime:$ime</p>";
echo"<p>grad:$grad</p>";
if($spol=="m"){
echo"<p>spol: muško</p>";
}else{
echo"<p>spol: žensko</p>";
}
if($nzp=="da"){
echo"<p>nezaposlen: da</p>";
}else{
echo"<p>nezaposlen: ne</p>";
}
if($uc=="da"){
echo"<p>učenik: da</p>";
}else{
echo"<p>učenik: ne</p>";
}
}
?>

Komentar koda

I što se sad tu može naučiti? Pokupat ćemo izvući ono najbitnije.

Zadavanje obrasca u HTMLu

Pretpostavimo da znate zadati elemente obrasca. Ovdje ih ima dosta. Zadajete ih najlakše preko trake s alatima Forms te kroz dijaloge. Ono što treba pisati ispred pojedinog elementa zada se kao label, a bitno je i ime (name) te vrijednost (value) samog elementa. Upravo to ime i vrijednost će nam trebati prilikom prenosa podataka. Naknadno je trebalo malo podesiti radio-dugmiće (podesiti im ISTO ime, ali različite vrijednosti).

Obrazac (tag <form>) je podešen da šalje podatke istoj toj stranici s koje se podaci i šalju (pogledajte njegov action parametar).

Obrazac sadrži i jedno skriveno polje naziva bio i vrijednosti "da".

Prihvat podataka

Prihvat podataka izveden je odmah nakon početka php bloka. Općenito ga izvodimo naredbom sintakse:

$ime_varijabla=$_GET['ime_elementa_obrasca'];

Naravno u slučaju da smo radili s POST metodom tad bi opći oblik bio:

$ime_varijabla=$_POST['ime_elementa_obrasca'];

Skriveno polje

Iako se ta funcionalnost može postići i drugačije, poslužili smo se skrivenim poljem obrasca kako bismo dijagnosticirali da li je korisnik već bio na stranici i poslao podatke ili ju je tek sad otvorio.

Skrivena polja nisu vidljiva u pregledniku, a osim argumenta type="hidden", treba im zadati i vrijednost npr value="da". Tako će u slučaju da je korisnik poslao podatke $_GET['bio'] imati vrijednost "da", a u drugom neće. Tim smo se poslužili kako bismo poslane podatke pokušali ispisati samo ako je korisnik uistinu bio na stranici i poslao podatke (if($bio=="da"){...).

I zaključak

  • Slanje i primanje podataka su osnovne radnje u PHPu bez kojih ne bismo mogli ostvariti niti najjednostavnije web aplikacije.
  • Za izradu obrasca za slanje podataka ne treba nam PHP, sve se napravi HTMLom
  • GET metoda slanja podataka pogodna je za male količine podataka koji ne zahtijevaju tajnost
  • POST metodom možemo prenijeti i veće količine podataka
  • podatke prihvaćamo $_GET[] odnosno $_POST[] naredbama.