11.07.2015 Views

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

P R O G R A M U J E M EProgramovanie v PHP4. èas : PHP a formuláreV novom roku 2001 sa stretávame pri štvrtej èasti seriálu o programovaní v PHP. Tentorazbude reè o formulároch a spracovaní dát z nich PHP <strong>sk</strong>riptami.Skripty <strong>na</strong> strane servera slúžia <strong>na</strong> zlepšenie možností interakcie medzi používate¾om aserverom. Skripty môžu generova stránky z dát v databázach pod¾a kritérií zadanýchpoužívate¾om, ale aj uklada dáta zí<strong>sk</strong>ané od používate¾ov do databázy, kde sú potom kdispozícii tomu, pre koho sú urèené (aspoò by to teda malo tak by , aj keï sa to možnohackerom nepáèi ;-).Pred tým, než zaèneme používa PHP <strong>sk</strong>ripty <strong>na</strong> spracovanie dát z formulárov, musímesi osvoji pravidlá písania HTML kódu. Podstatné je pomenúva všetky položky formulárov.V prípade, že ste zvykli nepomenúva položky, rýchlo sa tohto zlozvyku zbavte. Menápoložiek sú dôležité <strong>na</strong> ïalšie spracovanie v PHP <strong>sk</strong>ripte. Nemali by ste zabudnú <strong>na</strong> kontroluformulára ešte pred odoslaním. Zabránite tak odoslaniu chybne vyplneného formuláraa ušetríte tým aj používate¾ovi dos èasu. Táto kontrola sa vykonáva väèšinoupomocou JavaScriptu, prièom však nie je vždy možné zabezpeèi 100-percentné ošetrenievstupu (dokonca používate¾ môže JavaScript vypnú ), takže je potrebné vyko<strong>na</strong> kontrolusprávnosti aj v samotnom PHP <strong>sk</strong>ripte.Princíp spracovania dát z formulára v PHP je z<strong>na</strong>ène jednoduchý a efektívny. Ešte trebapripomenú , že dáta z formulárov možno posiela dvoma metódami: GET a POST. MetódaGET funguje tak, že pripojí <strong>na</strong> koniec URL adresy, <strong>na</strong> ktorú sa dáta posielané, re azec,ktorý obsahuje zadané dáta. Za URL adresou <strong>na</strong>sleduje z<strong>na</strong>k ? (otáznik) a za ním vyplnenédáta z formulára, prièom v re azci sa <strong>na</strong>chádza meno položky a jej hodnota vo formemeno=hodnota. Takéto jednotlivé položky sú oddelené z<strong>na</strong>kom & (ampresand), takževýsledná URL má približne takúto podobu:http://<strong>www</strong>.server.<strong>sk</strong>/<strong>sk</strong>ript.php?meno=Peter&vek=17&<strong>sk</strong>ola=gym<strong>na</strong>ziumTakto nejako bude vyzera URL, keï vyplníme vo formulári položky meno, vek a školaa tento formulár pošleme <strong>na</strong> spracovanie <strong>sk</strong>riptu <strong>sk</strong>ript.php. Pravdepodobne viete, akýmspôsobom sa definuje <strong>sk</strong>ript, <strong>na</strong> ktorý majú smerova dáta z vyplneného formulára poodoslaní. Pre úplnos to však pripomeniem, opakovanie je predsa matka múdrosti ;-) – vtagu FORM definujeme parameter ACTION, ktorého hodnotou je re azec obsahujúci umiestnenie(URL) <strong>sk</strong>riptu, ktorý má dáta spracova . Teraz sa vrátime k druhej metóde, tedametóde POST. Tá sa väèšinou viac odporúèa <strong>na</strong> odosielanie dát vo formulári, pretoženepripája nijaké vyplnené dáta za adresu URL, èo z<strong>na</strong>mená vyššiu bezpeènos a aj„úh¾adnejšie“ riešenie. Z poh¾adu bezpeènosti je dôležité to, že požiadavky vášhobrowsera <strong>na</strong> server (teda URL adresy) sú vidite¾né pre administrátora servera a vlastne prehocikoho, kto má k tomuto serveru fyzický prístup. To z<strong>na</strong>mená, že pri prenose informáciímetódou GET môže vidie aj dáta obsiahnuté v URL adrese, teda dáta vyplnenépoužívate¾om. To je, ako mi iste dáte za pravdu, nežiaduce, hlavne v prípadoch, že saprenášajú osobné a citlivé údaje, ako môže by <strong>na</strong>príklad prístupové heslo. Pri použitímetódy POST takéto nebezpeèenstvo nehrozí, pretože dáta v URL adrese nie sú, a tedanemôžu by ani vidite¾né v požiadavke <strong>na</strong> serveri.PríkladAko príklad nám poslúži jednoduchý formulár so 4 položkami, ktorý odošleme <strong>na</strong> spracovanie<strong>sk</strong>riptu. Na zaèiatok nám bude staèi , ak <strong>sk</strong>ript vypíše <strong>na</strong> obrazovku odoslanédáta. Takže tu je formulár v HTML:function check() {if (document.formular.meno.value==“„) {alert(‘Vyplòte prosím vaše meno’);document.formular.meno.focus();return false;}if (document.formular.priezvi<strong>sk</strong>o.value==“„) {alert(‘Vyplòte prosím vaše priezvi<strong>sk</strong>o’);document.formular.priezvi<strong>sk</strong>o.focus();return false;}if (document.formular.vek.value==“„) {alert(‘Vyplòte prosím váš vek’);document.formular.vek.focus();return false;}}if (document.formular.adresa.value==“„) {alert(‘Vyplòte prosím vašu adresu’);document.formular.adresa.focus();return false;}Meno: Priezvi<strong>sk</strong>o: Vek: Adresa: Tak poïme k rozboru. Na zaèiatku je v tagu SCRIPT <strong>na</strong>písaná funkcia check() vJavaScripte, ktorá slúži <strong>na</strong> kontrolu nevyplnených polí vo formulári. Funkcia sa volá vždypri pokuse o odoslanie formulára a nedovolí ho odosla , ak nie sú vyplnené všetkypoložky. Vzh¾adom <strong>na</strong> to, že toto je seriál o programovaní v PHP, necháme už JavaScript<strong>na</strong> pokoji. Ako ste si mohli všimnú , formulár má štyri položky, pomenované meno,priezvi<strong>sk</strong>o, vek a adresa. Na odoslanie sa použije metóda POST a spracúva dáta bude formulárspracuj.php. Ako teda týmto <strong>sk</strong>riptom spracova dáta? PHP po<strong>sk</strong>ytuje jednoduchýspôsob: po odoslaní dát má <strong>sk</strong>ript k dispozícii premenné, ktorých meno je zhodné smenom položky vo formulári, s tým rozdielom, že <strong>na</strong> zaèiatku me<strong>na</strong> premennej, samozrejme,píšeme z<strong>na</strong>k $ (dolár). Hodnoty položiek meno, priezvi<strong>sk</strong>o, vek a adresa budeme mateda v <strong>sk</strong>ripte k dispozícii v premenných $meno, $priezvi<strong>sk</strong>o, $vek a $adresa. Súbors formulárom si uložíme <strong>na</strong>pr. pod názvom form.html a teraz príde ukážka, ako môže byimplementované spracovanie dát v spracuj.php:Na zaèiatku sa otestuje, èi boli odoslané všetky položky. V prípade, že sa niekto s<strong>na</strong>žío nekorektný prístup (<strong>na</strong>pr. priamym spustením <strong>sk</strong>riptu), vypíše sa chybové hlásenie a beh<strong>sk</strong>riptu je ukonèený príkazom exit. Ešte musím spomenú použitie funkcie IsSet(),ktorá zistí, èi premenná odovzdaná ako parameter existuje. Ak áno, vráti true, i<strong>na</strong>k false.Ak premenná neexistuje, z<strong>na</strong>mená to, že <strong>sk</strong>ript nie je volaný korektne cez formulár, alepravdepodobne bol spustený priamo a bez parametrov. V prípade, že <strong>sk</strong>ript má k dispozíciivšetky premenné, prejde podmienkou a vykoná ïalšie príkazy, ktoré za òou <strong>na</strong>sledujú.V tomto prípade ide o výpis odoslaných premenných, èo však slúži len ako demonštraènýpríklad, pretože v praxi by takýto <strong>sk</strong>ript asi nemal ve¾ké uplatnenie. My však užvieme, ako používa súbory, takže preèo nezapísa dáta <strong>na</strong>príklad do nejakého súboru?Skúste túto alter<strong>na</strong>tívu implementova sami.Zatia¾ sme si ukázali, ako odosla textové položky formulára. Poznáme však viacerotypov položiek, preto sa teraz budeme venova tým ostatným. Jedným z typov vstupumôže by checkbox, teda zaškrtávacie políèko. V tagu INPUT je definované akoTYPE=“checkbox“. Takéto políèko môže <strong>na</strong>dobúda iba dva stavy – buï je zaškrtnuté,alebo nie je. V <strong>sk</strong>ripte, ktorý spracúva dáta, sa táto <strong>sk</strong>utoènos prejaví tak, že premennácharakterizujúca dané políèko buï je „setnutá“, alebo nie, teda buï existuje, alebo nie.Na overenie tejto <strong>sk</strong>utoènosti nám poslúži už spomí<strong>na</strong>ná funkcia IsSet(), ktorá zis uje,èi premenná daná ako parameter existuje, alebo nie. Ak teda checkbox zaškrtnutý bol,bude v <strong>sk</strong>ripte k dispozícii aj premenná s menom checkboxu a funkcia IsSet() vraciatrue a <strong>na</strong>opak, ak políèko zaškrtnuté nebolo, nie je k dispozícii ani premenná, a teda100 PC REVUE 1/2001

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!