2. 5. 2014

WAP stránky 2 - formuláre

Formuláre fungujú rovnako ako v prípade html stránok.
Na prvej stránke (môže byť statická) je umiestnený formulár, ktorý odošle po odkliknutí tlačidla jednotlivé políčka druhej stránke.
Druhá stránka (dynamická, môže obsahovať aj formulár na seba) načíta a spracuje odovzdané údaje a podľa nich sa rozhodne aké informácie zobrazí.

Možnosti odosielania políčok z formulára
  • GET - parametre sú súčasťou načítanej adresy
  • POST - parametre sú posielané v tele requestu stránky


Metóda GET


Metóda GET zoradí parametre za požadovanú stránku oddelené od adresy stránky znakom ? (otáznik) a parametre medzi sebou znakmi & (ampersant).
http://www.test.sk/formular.php?meno=fero&vek=20

Keďže sú parametre viditeľné, používa sa hlavne v prípadoch kedy parametre určujú aká stránka sa zobrazí (číslo článku ako parameter, vyhľadávanie). Takúto stránku je možné uložiť do záložiek (bookmarks) v prehliadači a zobrazí vždy to čo očakávame.
Výhodou tiež je, že stránka s konkrétnym parametrom môže byť cacheovaná.

Nevýhod je viac, posielanie hesiel alebo iných súkromných dát je týmto spôsobom mimoriadne nebezpečné. Údaje sú viditeľné napríklad v logu proxy servera, v logu servera stránky (napr. apache), zostávajú v histórií prehliadača.
Problémom je tiež obmedzenie dĺžky adresy stránky na cca 2000 znakov. Takto dlhá linka sa navyše dá považovať za veľmi nepraktickú na posielanie.


Metóda POST


Metóda POST  neupravuje adresu, parametre posiela v tele (message body) POST requestu stránky.
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2


Takéto zasielanie je potrebné pri posielaní súkromných údajov.
Používa sa tiež pre posielanie dlhých parametrov (napríklad reakcia v diskusií pod článkom, text odosielaného mailu vo webmaily).
Takto posielané údaje nemožno uložiť do záložiek, parametre niesú viditeľné v logoch, v histórií prehliadača. Stránku s parametrami tiež nemožno cacheovať.


WAP stránka s formulárom


Príklad jednoduchého formuláru pre vyhľadanie spojenia metódou GET

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card id="c1" title="CP">
<p>
Odkiaľ:<input title="odkial" name="o" value="B" /><br />
Kam:<input title="kam" name="k" value="P" /><br />
<a href="?o=$(o)&amp;k=$(k)&amp;c=$(c)&amp;d=$(d)">Nájdi</a><br />
čas:<input title="kam" name="c" size="5" emptyok="true" value="0:18"/>
dátum:<input title="kam" name="d" size="10" emptyok="true" value="02.05.2014"/>
</p>
</card></wml>

Pre odoslanie je použité jednoduché linkovanie s parametrami priamo v adrese.

Odosielanie formuláru metódou POST:

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card id="s" title="Posli mail">
<p>
komu:<input type="text" title="komu" name="g" size="15" maxlength="25" value="aaa@bbb.cc" /><br /> 
text:<input type="text" title="text" name="f" size="80" maxlength="140" value="ahoj" /><br />
<anchor title="posli..">
  <go href="email.php" method="post" sendreferer="true">
    <postfield name="g" value="$(g)"/>
    <postfield name="f" value="$(f)"/>
  </go>
  Pošli
</anchor><br />
<anchor title="Zmazat">Zmaž<refresh><setvar name="f" value=""/></refresh></anchor>
</p>
</card></wml>



Stránka spracúvajúca formulár


Po odoslaní formulára druhej stránke musí táto načítať poslané parametre a podľa nich vygenerovať stránku (odpoveď, informáciu o odoslaní mailu, požadovaný článok, výsledky vyhľadávania).

Načítanie parametrov prebieha u PHP funkciou $_GET alebo $_POST podľa použitej metódy formulára.
Parametre je dobré z hľadiska bezpečnosti (obzvlášť ak sú použité ako súčasť SQL príkazu) skontrolovať na nepovolené znaky, prípadne odfiltrovať HTML kód.

Funkcia pre vyfiltrovanie znakov z POST alebo GET parametrov:
function _INPUT($name)
{
if ($_SERVER['REQUEST_METHOD'] == 'GET')
if (isset($_GET[$name]))
return str_replace("'","",strip_tags(escapeshellarg($_GET[$name])));
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if (isset($_POST[$name]))
return str_replace("'","",strip_tags(escapeshellarg($_POST[$name])));
}


Parametre sa načítajú potom v php kóde stránky a spracujú sa pri jej načítavaní klientom.
$meno = _INPUT('g');




Formát políčok formulára


U malých displejov telefónov a pomalšieho zadávania znakov a čísel je o to dôležitejšie mať správne nastavené veľkosti a formát políčok formulára.

Formulárové políčko s parametrami:
<input name="a" size="1" maxlength="1" format="1N" emptyok="true" value="<? echo $kon; ?>" />


name - meno odosielanej premennej
size - dĺžka zobrazeného políčka v znakoch
maxlength - maximálna dĺžka vyplneného textu
format - formát vypĺňaných údajov
emtpyok - či umožniť poslať formulár bez vyplnenia tohto políčka (predvolené false)
value - predvyplnená hodnota

Formát určí presne, koľko znakov má byť napríklad číslica, koľko písmeno, telefón by nemal povoliť zápis iného ako určeného znaku navyše automaticky prepnúť režim klávesnice na daný formát.
A = veľké písmeno alebo znak
a = malé písmeno alebo špec znak

N = číslica
X = veľké písmeno
x = malé písmeno
M = všetky znaky
m = všetky znaky
*f = akýkoľvek počet znakov (f nahradiť formátom z hore uvedených)
nf = n ako počet 0 až 9 znakov pre ktoré platí formát f (f nahradiť)




Dodatok


Formulárové políčka možno na klik zmazať
<anchor title="Zmazat">Zmaž<refresh><setvar name="f" value=""/></refresh></anchor>


Vstupné parametre je dobré kontrolovať cez isset pred ich spracovaním, aby sa predišlo warningu o neexistujúcej premennej.

Žiadne komentáre:

Zverejnenie komentára