[ 16. August 2000]
- Andrej_Chu
Spracovßvanie dßt z formulßrov (PHP - Φas¥ 6)
Tak₧e som s╛·bil, ₧e sa dnes budeme venova¥ nejakej praktickej zßle₧itosti. Rozhodol som sa pre prφpad, kedy je PHP ve╛mi Φasto pou₧φvanΘ, a to spracovßvanie dßt z formulßrov.
Pri formulßroch v HTML dokumentoch poznßme dva typy odosielania dßt - POST a GET. Met≤da GET pripojφ dßta za nßzov skriptu, ktor² ich spracovßva. To sa uskutoΦnφ tak, ₧e za nßzov skriptu sa vlo₧φ otßznik, meno premennej a jej hodnota. Ukß₧ka: spracuj.php?cislo=5 Takßta met≤da nie je prφliÜ vhodnß kv⌠li tomu, ₧e ka₧d², kto mß prφstup k dßtam vßÜho serveru, vidφ, ktorΘ strßnky si prezerßte a s nimi aj parametre met≤dy GET. V prφpade, ₧e s· v nich nejakΘ d⌠le₧itΘ premennΘ, ako naprφklad heslß, mohlo by to ma¥ ne₧iaduce ·Φinky. preto je preferovanejÜou met≤dou POST. V tomto prφpade je absol·tne bezpeΦnΘ prenßÜa¥ akΘko╛vek dßta, preto₧e tieto nie s· nijak vidite╛nΘ. OvÜem, niekedy sa m⌠₧ete dosta¥ do situßcie, ₧e budete musie¥ pou₧i¥ aj met≤du GET, vtedy si vÜak musφte dßva¥ pozor, ako ju implementujete. NajlepÜie je pou₧i¥ nejakΘ k≤dovanie. Ak² typ met≤dy sa mß pou₧i¥ zadßte browseru vlo₧enφm parametru METHOD do tagu FORM a parametrom ACTION zasa urΦφte skript, ktor² mß dßta spracova¥:
<FORM ACTION="spracuj.php" METHOD=POST>
Ak chceme odovzdßva¥ hodnoty skriptu, musφme ich pomenuvßva¥ v celom formulßri. Ukß₧eme si jednoduch² typ formulßru, ktor² obsahuje Ütyri polo₧ky - meno, priezvisko, vek a e-mail:
<FORM ACTION="spracuj.php" METHOD=POST>
Meno: <INPUT TYPE=TEXT NAME="meno" SIZE=15 MAXLENGTH=25><BR>
Priezvisko: <INPUT TYPE=TEXT NAME="priezvisko" SIZE=15 MAXLENGTH=25><BR>
Vek: <INPUT TYPE=TEXT NAME="vek" SIZE=2 MAXLENGTH=3><BR>
E-mail: <INPUT TYPE=TEXT NAME="email" SIZE=15 MAXLENGTH=30><BR>
<INPUT TYPE=SUBMIT VALUE="OdoÜli">
</FORM>
Vyplnenφm formulßru a kliknutφm na tlaΦφtko "OdoÜli" odoÜleme dßta skriptu spracuj.php. Tento skript u₧ s nimi urobφ, Φo uznß za vhodnΘ, resp. Φo mu programßtor implementoval. PHP skripty nerozliÜuj· rozdiely medzi dßtami zaslan²mi met≤dou GET a met≤dou POST. VÜetky odoslanΘ premennΘ s· aktivovanΘ automaticky a prφstupnΘ okam₧ite vßÜmu skriptu. Meno ka₧dej premennej zφskate pridanφm znaku $ pred meno, ktorΘ bolo pre polo₧ku urΦenΘ vo formulßri. To znamenß, ₧e hodnota polo₧ky "priezvisko" z formulßra bude ulo₧enß v premennej $priezvisko. ZφskanΘ ·daje m⌠₧eme vyu₧i¥ pod╛a potreby, naprφklad ich vypφsa¥: <?php // skript spracuj.php
echo "$meno $priezvisko mß $vek rokov. E-mail je $email."
?> ╧alÜou mo₧nos¥ou je zasla¥ ·daje na e-mail. Na to nßm posl·₧i funkcia mail(). Mß Ütyri parametre, priΦom posledn² je nepovinn². Prv² parameter je adresßt, druh² predmet a tretφ samotnΘ telo e-mailu. Ak chcete, m⌠₧ete vyu₧i¥ nepovinn² Ütvrt² parameter, kde je mo₧nΘ Üpecifikova¥ prφdavnΘ parametre. Nßm staΦφ vyu₧i¥ zatia╛ prvΘ tri parametre, ak chcete aj ten Ütvrt², odpor·Φam pozrie¥ si manußl: <?php // skript spracuj.php
mail("meno@provider.sk","┌daje z formulßra","$meno $priezvisko mß $vek rokov. E-mail je $email.");
?> ╚o vÜak prφpade, ₧e chceme z formulßru odosla¥ ·daje typu SELECT, kde ich m⌠₧e by¥ oznaΦen²ch viac? Vtedy musφme vyu₧i¥ polia. Formulßr m⌠₧e vyzera¥ napr. takto: <FORM ACTION="spracuj.php" METHOD=POST>
<SELECT NAME="zamestnanie[]" MULTIPLE SIZE=3>
<OPTION VALUE="programßtor" NAME="zamestnanie[]">programßtor
<OPTION VALUE="grafik" NAME="zamestnanie[]">grafik
<OPTION VALUE="dizajnΘr" NAME="zamestnanie[]">dizajnΘr
<OPTION VALUE="webmaster" NAME="zamestnanie[]">webmaster
<OPTION VALUE="mana₧Θr" NAME="zamestnanie[]">mana₧Θr
<OPTION VALUE="riadite╛" NAME="zamestnanie[]">riadite╛
<OPTION VALUE="asistent" NAME="zamestnanie[]">asistent
</SELECT><BR>
<INPUT TYPE=SUBMIT VALUE="OdoÜli">
</FORM> V skripte spracuj.php budeme ma¥ pole $zamestnanie, ktorΘ bude ma¥ to╛ko prvkov, ko╛ko sme v menu oznaΦili, priΦom v ka₧dom prvku bude ulo₧enß jedna polo₧ka. Polo₧ky s· indexovanΘ od 0: <?php
for ($i=0;$i<count($zamestnanie);$i++) //vypiseme obsah pola zamestnanie {
echo $zamestnanie[$i]."<BR>n";
}
?> Nabud·ce si ukß₧eme ako uklada¥ dßta do s·borov.
|
|
|