Sada ćemo da pogledamo kako funkcionišu forme:

Forme

Za prikupljanje podataka od korisnika se najčešće koriste HTML forme. Tu će korisnik da unosi neke podatke u formu i kada se odabere opcija za submit forme, browser će da formatira podatke i da pošalje zahtev ka serveru. Između ostalog u tom zahtevu će da se nalazi i naziv fajla na serveru koji bi trebalo da obradi zahtev.

Ranije ste se upoznali sa HTML formama, a sada ćete se saznati i kako se prihvataju i obrađuju podaci koji su unešeni u formu. To se postiže korišćenjem PHP-a.

Kao što znate od ranije, forma je HTML element pomoću kojeg se grupiše više elemenata za unos podataka. Za formu koristimo HTML tagove (početni i krajnji), kao i atribute.

Primer:

<html>
<head>
<title>Moja forma </title>
</head>
<body>
<h1>Neka moja forma</h1>
<hr>
<p>Popuniti sledece polje: </p>
<form method="post" action="obradi.php" name="forma1">
<input name="submitdugme" type="submit" value="Posalji">
</form>
</body>
</html>

Kratko objašnjenje atributa:

    method=”post”- metoda kojom će se podaci iz forme proslediti fajlu koji vrši obradu forme.
    action=”obradi.php”- definišemo fajl na serveru, koji obrađuje zahtev.
    name=”forma”- atribut koji omogućava identifikaciju same forme (treba nam ako koristimo JavaScript).
    input tag – za unos podataka od strane korisnika. Ako je input element tipa submit, na ekranu će da se prikaže kao dugme, pa kad se klikne na dugme generiše se događaj onsubmit (submit-ovanje ili slanje forme).

Metode slanja i prihvatanja podataka

Dve osnovne metode prosleđivanja podataka forme nekom fajlu (skripti) su: POST i GET. Kako da odberete koja vam treba?
Tako što to navedete u okviru <form> taga, kao method=”post” ili method=”get” .

Odabir metode utiče na koji način će se podaci sa forme proslediti. U PHP-u se odabirom metode bira i način na koji će ti podaci biti prihvaćeni.

Ako se odabere metoda GET - podaci forme se šalju kroz komandnu liniju (to se vidi kao query string, tj. iza znaka ? u adress-baru browsera). Podaci se prenose u obliku ključ=vrednost.

Ako se odabere metoda POST podaci nisu vidljivi u komandnoj liniji već se šalju transparentno, kroz telo (body) HTTP zahteva (HTTP request). 


*

VEŽBA - 1. deo:

U narednom zadatku ćemo videti kako možemo da proverimo da li je kliknuto na dugme "Registruj se" i kako možemo da pokupimo sve podatke sa forme.

* Kreirati folder php_forma i u njemu kreirati index.php
* Postavite na vrh naslov: "Registruj se"
* ispod naslova napraviti formu, korišćenjem html tagova: <form> i </form>
* U samoj formi dodati opcije action i method.
* Za početak ćemo postaviti action="index.php", da nas vrati na isti fajl.
* Za method biramo ili POST ili GET. U ovom primeru ćemo da koristimo POST.
* Kreirati polja za username i password, i dugme za registraciju:

username: <input type="text">  <br>
password: <input type="password">  <br>
<input type="Submit">

...

Podsetimo se:

  • sam php server traži fajl index.php kako bi automatski pokrenuo tu stranicu. Ukoliko ona ne postoji, izlistaće sve podatke koji se nalaze u odabranom folderu na serveru.
  • U opciji action za cilj imamo da postavimo lokaciju ili putanju ili fajl na koji želimo da nas forma usmeri prilikom klika na dugme.

PHP poseduje niz globalnih promenljivih u kojima se nalaze razni podaci vezani za server, informacije o korisniku, operativni sistem, cookiji, promenljive iz formi i Query string.

Na primer> ako korisnik u formi popuni polja za korisničko ime i pasword, na serveru neće biti nikakvih promenljivih $name, $password, već se podaci šalju u obliku niza: $_POST[‘name’], $_POST[‘password’] i može im se pristupiti samo preko globalne promenljive $_POST.

Globalne promenlive sa kojima ćemo se sretati:

    $_GLOBALS -  niz u kojem su reference ka svim globalnim promenljivima koje su dostupne u okviru lokalne skripte. Imena promenljivih predstavljaju ključeve ovog niza.

    $_SERVER - Globalna promenljiva sa informacijama o serveru i korisniku.

    $_GET i  $_POST - Opširnije o ovim globalnim promenljivima kada bidemo radili vežbe sa formama.

    $_COOKIE - Sadrži informacije iz HTTP kukija.

    $_FILES - Globalna promenljiva sa fajlovima koji su uploadovani na server putem forme.

    $_ENV - Sadrži informacije o okruženju u kojem radi PHP paser. 

    $_SESSION - Asocijativni niz varijabli sa informacijama registrovanim u okviru sesije

    $_REQUEST

Upotreba nekih od ovih globalnih promenljivih će biti jasnija u sledećem delu: 


* VEŽBA - 2. deo: Submit dugme

* uvodimo malo php koda:
* ispred forme kreirati početak php koda i zatvoriti ga. Van okvira granica php-a može da se izvršava html. Ako biste html stavili unutar tagova za html, dobićete poruku o grešci jer će php server tražiti komande (ono što piše kao html tag)
* cilj: uz pomoć php-a da ispitamo da li postoji klik na dugme submit
* našem dugmetu dajemo naziv: reg
* pitanje: Da li postoji klik na dugme pod nazivom reg?
* U okviru if uslova pitamo: isset($_POST['reg']) { ...
* ako je uslov ispunjen, ispisati: "Kod radi", a ako uslov nije ispunjen ispisati poruku "klik na postoji"
*  prikazati uslov nepostojanja: else if(!isset($_POST['reg'])  - ako nije kliknuto da se ispiše nešto
* Na kraju ubaciti našu formu u onom momentu kada ne postoji klik - da se samo tada forma vidi
* - prekinuti php, ubaciti formu, ali da bi de if nastavio, treba da nastavimo php kod, pa ponovo otvoriti php tag
*

<?php
  // ispitivanje klika
  if(isset($_POST['reg'])) {
    // klik postoji
    echo "Klik postoji";
   } else if(!isset($_POST['reg'])) {
    // klik ne postoji
 ?>
 <form action="index.php" method="POST">
  username: <input type="text"> <br>
  password: <input type="password"> <br>
  <input type="submit" name="reg">
 </form>
  <?php
   }
  ?>

* VEŽBA - 3. deo: Dodeljivanje unesenih vrednosti nekim promenljivima

* cilj: dodeljivanje vrednosti iz polja username i password nekim promenljivama
* koristimo se metodom POST i globalnom promenljivom $_POST
* Pre bilo čega:
    * treba dodeliti imena (name) poljima u kojima se unose vrednosti username i password (user, pass)
* Kreirati promenljivu $username = $_POST['user'];
    * između navodnika se unosi naziv polja u koje se unosi username
* Slično kreirati promenljivu $password
* Šta želimo?
    * Nakon klika na dugme da pokupimo podatke i da te podatke dodelimo promenljivoj pa ispisati sve to ako je došlo do klika ...

* Unutar if : ako postoji klik na dugme submit, tj. ako je postavljena vrednost reg (ako je prisutna, tj ako je došlo do događaja klika na dugme kojem je name="reg"), i tada će se izvršiti ono posle if - treba ispisati username i password.

<?php
  if(isset($_POST['reg'])) {
    $username = $_POST['user'];
    $password = $_POST['pass'];
    echo $username," ", $password;
   } else if(!isset($_POST['reg'])) {
    // klik ne postoji
 ?>
 <form action="index.php" method="POST">
  username: <input type="text" name="user"> <br>
  password: <input type="password" name="pass"> <br>
  <input type="submit" name="reg">
 </form>
  <?php
   }
  ?>

Pitanje za razmišljanje: Šta se prikazuje ako se ne klikne na dugme?


* VEŽBA - 4. deo: Malo uređivanja forme

Postaviti naslov na vrhu, i kao drugo, postaviti link za povratak na početnu stranicu ako nije kliknuto na dugme (<a href="index.php">Povratak na početak</a>)


* VEŽBA - 5. deo: Bezbednost u radu sa formom - validacija ...

cilj: "hvatanje" potencijalnih grešaka
* kreirati promenljivu greska koja ima vrednost ""
* ako nisu uneseni podaci - kako dalje
* koristimo ugrađenu funkciju empty() koje proverava ako nečega nema:
    if(empty("$username"))
        $greska .= "morate uneti username <br>";
* isto to uraditi za drugo polje (password)

* nakon toga:
    *  ako je promenljiva $greska ostala na "" ispisati username i password, a link za povratak prikazati u novom redu
*ali ako postoji grešaka:
    * onda ispisati poruku o grešci
        echo $greska;

Poslednja izmena: уторак, 15. март 2022, 15:20