PHPPamokos.lt


10. Formos ir jų apdorojimas

Internetas nebūtų toks interaktyvus, jei žmonės galėtų ten tik skaityti informaciją, bet negalėtų patys jos pildyti. Būtent vartotojų veiksmams ir reikalingos taip vadinamos formos, kurių duomenis gali apdoroti PHP skriptai. Pažiūrėkime, kaip tai daroma.

HTML: formos sukūrimas

Pradėkime nuo to, kad formą reikia sukurti, tai yra daroma visiškai ne su PHP kalba, o su HTML. Papasakosime, kaip tai daroma.

Sakykime, kad norime sukurti registracijos formą iš tokių laukų: vardas, el.pašto adresas, gimimo metai ir ar norite gauti naujienas.

Atrodys forma daugmaž taip:

Tokio vaizdo HTML kodas:

<form action="rezultatas.php" method="post">
Vardas: <input type="text" name="vardas" />
<br /><br />
El.pašto adresas: <input type="text" name="pastas" />
<br /><br />
Gimimo metai:
<select name="metai">
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
</select>
<br /><br />
Ar norite gauti naujienas el.paštu:
<input type="checkbox" name="naujienos" />
<br /><br />
<input type="submit" name="submit" value=" Registruotis " />
</form>

Šiuo atveju labai svarbi pati pirmoji eilutė - formos apibrėžimas:

<form action="rezultatas.php" method="post">

Joje du reikalingi parametrai:

  • action - nurodo, kuris PHP skriptas apdoroja formos duomenis;
  • method - nurodo metodą, kuriuo bus perduodami formos duomenys: pagrindiniai metodai yra du: GET ir POST. Skirtumą paaiškinsime šiek tiek vėliau.

Skirtingi formos elementai gali būti skirtingai aprašomi: daugumai iš jų skirta HTML komanda input su parametrais.Tekstinis laukelis:

<input type="text" />

Varnelė:

<input type="checkbox" />

Radio mygtukas:

<input type="radio" />

Taigi, tokiu būdu tarp komandų <form> ir </form> aprašomi visi formos laukai HTML kodu.

 

PHP: duomenų perdavimas į PHP skriptą - metodai GET ir POST

Kai lankytojas užpildo formą ir paspaudžia mygtuką, tada jo duomenys nukreipiami į PHP skriptą, kuris formoje buvo nurodytas parametru action. Panagrinėkime, kaip tas skriptas apdoroja duomenis.

Visų pirma, iš kur PHP skripte atsiranda patys užpildyti duomenys. Jie gali atkeliauti dviem būdais: per jau kažkada minėtą masyvą $_GET arba kitą masyvą $_POST. Tai priklauso nuo to, kokį parametrą method nurodėte formos apibrėžime. Pažvelkime į abu variantus.

<form action="rezultatas.php" method="get">

Jeigu formos apibrėžime yra nurodytas metodas get, tada visi formos duomenys atkeliauja į PHP skriptą per masyvą $_GET. O jeigu dar tiksliau, jie perduodami tiesiog per naršyklės adresą (žr. pavyzdį žemiau).

Šio paveiksliuko pavyzdyje skriptui index.php perduodami du kintamieji: $_GET['action'] ir $_GET['query'].

Tokio GET metodo privalumas - kiekvienas formos užpildymas įgauna savo unikalų URL adresą, kurį vėliau galima naudoti kitiems tikslams. Tačiau yra du gana dideli trūkumai.

1. URL adreso ilgis

Jeigu jūsų formoje yra daugiau negu keletas laukų, tada URL adresas gaunasi labai griozdiškas, ir jį gali būti ne tik nepatogu skaityti, bet ir galite po to turėti problemų su adresų indeksavimu Google paieškos sistemoje.

2. Saugumo spraga

Jeigu leisite vartotojame matyti, kokius parametrus ir kintamuosius perduodate PHP skriptui, tai leis jiems pabandyti lengviau nulaužti skriptą, pasiunčiant netinkamus duomenis. Piktavaliai tiesiog įrašys į naršyklės adresą kitokias kintamųjų reikšmes ir žiūrės, kaip veiks jūsų skriptai. Kitas variantas - perduoti duomenis per POST metodą, jis ir yra naudojamas dažniau.

 

POST veikimo principas labai panašus, tik kintamieji neparodomi URL adreso eilutėje naršyklėje, tačiau pasiekiami per masyvą $_POST.

Dar kalbant apie saugumą, POST metodas tiesiogiai neapsaugo nuo neteisingų kintamųjų reikšmių perdavimo skriptui. Tad įsidėmėkite, kad jeigu po formos užpildymo atliekami kokie nors svarbūs veiksmai, tai reikia BŪTINAI tikrinti iš formos atkeliaujančius duomenis - ar jie yra būtent tokie, kokių jums reikia.

 

PHP: užpildytos formos duomenų apdorojimas

Priėjome prie svarbiausios dalies. Turėdami PHP skripte duomenis iš užpildytos formos, galime juos apdoroti. Tai yra - išvesti juos į ekraną, patikrinti jų teisingumą ir kt. Konkretus pavyzdys, kaip gali atrodyti viršuje pavaizduotos formos užpildymo skriptas rezultatas.php:

echo "Jūsų įvestas vardas: " . $_POST['vardas'] . "<br />";
echo "Jūsų įvestas el.pašto adresas: " . $_POST['pastas'] . "<br />";
echo "Jūsų gimimo metai: " . $_POST['metai'] . "<br />";
echo "Ar norite užsisakyti naujienas: ";
if ($_POST['naujienos'] && $_POST['naujienos'] == 'on') {
  echo 'taip';
} else {
  echo 'ne';
}

Užpildome formą:

Pagal viršuje esantį PHP kodą, gauname tokį rezultatą:

Taigi, tokiu būdu galite per PHP aprodoti užpildytus formos duomenis.



(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com