| Duomenų (kintamųjų) iš formos patikrinimas |
|
Dažna problema internete - netikri duomenys. Žmones bando apeiti formų pildymą, įrašo netikrus el. pašto adresus ir pan. Yra priemonių nuo to apsisaugoti. Visų pirma, reiktų riboti žinutės ilgį, kad nenaudėliai neprirašytų šiukšlių. Tai galima padaryti taip: <INPUT TYPE="text" size="20" NAME="from" maxlength="30"><br> <TEXTAREA NAME="msg" ROWS="3" COLS="20" maxlength="500"> </TEXTAREA> maxlength - didžiausias įvedamų simbolių skaičius. El. paštas, be abejo, gali būti nesąmoningas, todėl sukuriamas mažas skriptukas, kuris patikrina, ar el. paštas parašytas teisingai. Išnagrinėkime patį paprasčiausią atvejį, kai vartotojas neįveda el. pašto adreso. Tam mes naudosime funkciją empty(). Ji tikrina, ar kintamasis nėra tuščias (ar jam yra priskirta kokia nors reikšmė): if (empty($from)) { echo "Neįvestas el. pašto adresas"; } Įterpkite šį gabaliuką į mail.php ir turėsite apsaugą nuo tuščio from laukelio. Be abejo, žmogus gali į laukelį įvesti bet ką, tada bus apeita ši apsauga. Kad taip neatsitiktų, patikrinsime, ar įrašytas el. pašto adresas turi savyje simbolį "@". Naudojama paprasta string funkcija: int strrpos(string haystack, char needle). Ji randa ieškomo simbolio poziciją eilutėje: function eta() /* Funkcija, kuri patikrina, ar kintamajame $from yra "@" */ { global $from; /* $from padarome globaliuoju kintamuoju */ $pos = strpos($from, "@"); /* į kintamąjį $pos įrašoma pozicija, kurioje yra "@" */ if (!$pos) /* Pažiūrime, ar apskritai yra "@" adrese */ { return false; /* Grąžina funkcijos reikšmę false, jei "@" nėra adrese */ } else { if ($pos!=0 && $pos!=1) { /* Apsaugome, kad adresas nebūtų pvz. Šis el. pašto adresas apsaugotas nuo spam'o, peržiūrėjimui reikia įjungti JavaScript arba @as.lt) */ return true; /* Jei viskas gerai, grąžina funkcijos reikšmę true. */ } } } Štai funkcija, kuri apsaugo nuo el. pašto be simbolio "@". Taip pat galima tikrinti, ar į skriptą duomenys atsiunčiami POST metodu. Pvz. iš HTML dokumento: <form method=post action=reg.php> Pavyzdys iš reg.php skripto: if ($REQUEST_METHOD == "POST") { // darom } else echo "Klaida! Metodas turi būti POST!" ; Taip apsisaugosite nuo GET metodu perduodamų kintamųjų, pvz. reg.php?vardas=auksinis&mailas=kardas&papildomas=darkitoks... |