1 FORMULÁRE V PHP 1.časť Formuláre sú základnou časťou webových stránok, pokiaľ potrebujete zariadiť nejakú odozvu od používateľov návštevníkov vašich stránok. S formulármi sa stretávame na www stránkach denne. Napríklad pokiaľ sa chceme na nejakej webovej stránke zaregistrovať, otvoriť si účet alebo sa prihlásiť ako používateľ (pokec.sk, facebook a pod.), musíme vyplniť najčastejšie naše prihlasovacie meno (mailovú adresu) a heslo. Robíme to samozrejme pomocou jednoduchého prihlasovacieho formulára. Ak ešte nemáme na nejakej webovej stránke vytvorený účet, zadaním rôznych údajov o sebe vyplníme tzv. registračný formulár a účet je vytvorený. Ďalším z často používaných formulárov je formulár na odosielanie emailových správ. Takýto formulár si vytvoríme. Ak by sme to všetko mali zhrnieme, formulár slúži na zber informácií, ktoré používateľ vyplní. Tie sa potom pomocou skriptu PHP spracujú a odošlú na zadanú emailovú adresu. Na vytvorenie formulára potrebujeme najčastejšie tri súbory. 1 súbor: je súbor s xhtml kódom, pomocou ktorého formulár vytvoríme (.html) 2 súbor: je kaskádová šablóna, pomocou ktorej formulár upravíme graficky (.css) 3 súbor: súbor so skriptom na spracovanie a odosielanie údajov z formulára (.php) Výsledný formulár, ktorý si vytvoríme: obr. 1 výsledný formulár
2 Vytvorenie formulára: Krok 1: vytvoríme si webovú stránku s názvom formular.html Tu pomocou xhtml kódu vytvoríme formulár. Zdrojový kód pre formulár (na obr. 1) vyzerá nasledovne: Rozbor zdrojového kódu: <form action="data.php" method="post"> - začiatok formulára, action="data.php" to je cesta k súboru, v ktorom je skript na zber, spracovanie a odoslanie údajov z tohto formulára. method="post" ide o metódu php na odosielanie dát z formulára. <fieldset> </fieldset> - zoskupuje ľubovoľné polia vo formulári. V našom formulári má červenú farbu. Je to vlastne orámovanie. Slúži k sprehľadneniu formulára. <legend></legend> - popis formulára alebo poľa. Používa sa spolu s <fieldset> <label></label> - popis konkrétneho poľa <input name="email" type="text" size="28" />- vstupné pole typu text, čiže je to textové pole s dĺžkou 28px Toto pole je pomenované ako email. <textarea name="obsah" rows="7" cols="30"></textarea>- textové pole, textový priestor, priestor na väčšie množstvo textu. Toto pole je pomenované ako obsah. Má výšku (rows) 7 a šírku (cols) 30 znakov. <input name="odoslat" type="submit" value="odoslať" /> - odosielacie tlačidlo (type submit) <input name="vymaz" type="reset" value="vymaž" /> - tlačidlo na vymazanie údajov zo všetkých polí formulára (type reset)
3 Krok 2: ak potrebujeme (nie je to nutnosť), vytvoríme si šablónu style.css. v xhtml kóde sme označili jednotlivé polia (input) triedami class= pole, takže môžeme teraz jednotlivé prvky formulára upravovať pomocou kaskádových štýlov. CSS šablóna pre náš formulár bude vyzerať nasledovne: Takže formulár máme z hľadiska xhtml a css hotový. Samozrejme na to, aby bol funkčný potrebujeme ešte napísať skript, ktorý bude mať za úlohu pozbierať všetky údaje, ktoré používateľ zapíše do jednotlivých polí a následne ich poslať na zadanú mailovú adresu. Krok 3: vytvorenie php súboru, v ktorom bude skript na spracovanie údajov z formulára. Ako je uvedené v otváracej xhtml značke formulára, náš súbor sa bude volať data.php Teraz si vypíšeme všetky polia formulára, z ktorých sa budú zbierať údaje: <input name="meno" type="text" size="28" /> - meno odosielateľa <input name="email" type="text" size="28" /> - mailová adresa odosielateľa <input name="predmet" type="text" size="28" /> - predmet mailovej správy <textarea name="obsah" rows="7" cols="30"></textarea> - text mailovej správy
4 Ako vidíme, budeme pracovať s údajmi, ktoré sa vpíšu do týchto štyroch polí. To, čo je vyznačené zeleným, sú názvy jednotlivých polí, pomocou ktorých php rozoznáva jednotlivé polia. Žiadne z polí nesmie mať rovnaký názov ako iné pole. Ide o tzv. jedinečný názov. Zdrojový kód so skriptom php pre náš formulár je na nasledujúcom obrázku: Rozbor zdrojového kódu: ako sme si už povedali, v našom formulári sa budú spracovávať údaje zo štyroch polí. V prvom rade je potrebné údaje z formulára nejakým spôsobom preniesť z www stránky formular.html do skriptu v stránke data.php. Vytvoríme si pre tento účel premennú, do ktorej uložíme takéto prepojenie pre každý z polí zvlášť. Napr. ako prenesiem vyplnené údaje z poľa input name= meno? Týmto jednoduchým skriptom: $meno = $_POST['meno']; Vysvetlenie: vytvorili sme si premennú $meno, do ktorej sme uložili zápis $_POST['meno']. Návštevník zadá do poľa s označením name= meno svoje meno.
5 Tento údaj sa následne pomocou metódy POST prenesie do sktiptu, a uloží v premennej $_POST['meno']. $_POST je vlastne pole, ktoré sa použije v skripte, ak boli dáta z formulára odoslané pomocou metódy POST (method= post ). Podobným spôsobom vytvoríme pre každé pole premennú, do ktorej sa budú ukladať vpísané údaje z konkrétneho poľa formulára: $priezvisko = $_POST['priezvisko']; $predmet = $_POST['predmet']; $email = $_POST['email']; $text = $_POST['text']; Ďalším krokom bude zabezpečenie samotného poslania údajov na zadanú mailovú adresu. Skript bude fungovať tak, že mail sa odošle v takom prípade, ak budú vyplnené údaje vo všetkých poliach formulára. Ináč sa mail nepošle. Funkcia na odosielanie mailu pomocou php sa nazýva mail ( ). Táto funkcia má nasledujúcu syntax: mail (príjemca, predmet, text) je možné ešte do funkcie mail doplniť adresu odosielateľa a to nasledovne: mail (príjemca, predmet, text, from:odosielatel) POZOR! pozície jednotlivých položiek funkcie mail ( ) by sa nemali prehadzovať príjemca je adresa, na ktorú sa majú údaje z formulára zaslať. Príjemcu je možné vytvoriť aj tak, že celú mailovú adresu uložíme do premennej $prijemca: $prijemca = nejaky_mail@domena.sk Teraz stačí do funkcie mail ( ) vložiť na pozíciu príjemca premennú $prijemca. Podobne to bude s premetom, textom aj odosielateľom
6 Pre náš formulár bude vyplnená funkcia mail ( ) vyzerať nasledovne: mail("$prijemca", "$predmet", "$meno $priezvisko Vám posiela tento text: $text", "from: $email"); My ale chceme, aby sa mail odoslal len v takom prípade, ak budú vyplnené všetky polia formulára, t.j. php skript dostane pomocou metódy POST údaje zo všetkých polí formulára. Kostra celého nášho skriptu potom bude vyzerať takto: Skontroluje sa, či sú vyplnené údaje vo všetkých poliach formulára. Použijeme na to úplný podmienečný príkaz if else : if (($meno && $priezvisko && $email && $predmet && $text) == true) { ak áno, pošli mail. ( čiže teraz nasleduje funkcia mail ( ) ): mail("$prijemca", "$predmet", "$meno $priezvisko Vám posiela tento text: $text", "from: $email"); Pridáme ešte oznam, že mail bol odoslaný: echo "Váš <b>email bol</b> úspešne <b>odoslaný</b>!"; } a keďže je to úplný podmienečný príkaz, tak musíme zaistiť, čo sa stane, ak nie sú všetky údaje vyplnené: elseif (($meno && $priezvisko && $email && $predmet && $text) == false) { Ak niečo nie je vyplnené, zabezpečíme, aby sa vypísal nasledujúci oznam: echo "Váš <b>email nebol odoslaný</b>. <b>nezadali ste všetky</b> povinné<b>údaje</b>."; } Máme to hotové. Nezabudnite, že celý formulár bude fungovať až po umiestnení súborov na webový server.