© 2013 All rights reserved.
3

PHP: Výchozí hodnota formulářů

O tom jak správně doplňovat již odeslané hodnoty z formulářových polí jako jejich value hodnoty.

Pomocí PHP můžeme kontrolovat hodnoty vyplněné uživatelem ve formuláři, ale bohužel až po jeho odeslání. Často tak nastane situace, kdy musíme uživateli vypsat stejný formulář znova a vyzvat jej aby opravil překlepy, kterých se dopustil.

Pokud vypisujeme formulář znova, tak bychom měli zachovat hodnoty, které již jednou byly vyplněné a tyto hodnoty doplnit do formuláře jako výchozí hodnoty.

Výchozí hodnotu ve formulářových polích určuje většinou atribut value (mimo select a textareu), který obsahuje jeho hodnotu.

Pokud chceme doplnit výchozí hodnoty do formuláře, musíme to udělat pomocí tohoto atributu, do kterého nastavíme jako hodnotu hodnotu uloženou po odeslání v globálním poli GET nebo POST:

Tento jednoduchý způsob není moc praktický, protože vykazuje chybu typu Notice:

Tato chyba se bude objevovat po načtení formuláře a je způsobena tím, že index pole GET při načtení formuláře neexistuje (formulář doposud nebyl odeslán a proto neexistuje pole GET ani POST).

Můžeme tento základní příklad rozšířit a chyby notice se snadno vyvarovat:

Nyní jsme se konečně zbavily chybových hlášení, a poslední věc, kteru musíme udělat je ošetřit vstup. Vstup musíme ošetřit hlavně proti chybám typu XSS a to uděláme jednoduše například použitím funkce htmlspecialchars:

V případě pole POST by bylo všechno obdobné, jak je vidět na tomto příkladu:

Comments are closed for this page

error_reporting(15) – kdo to kdy videl ;)))

No protoze je zde popsane jak se script chova jenom pri nastaveni error reportin na E_ALL, tak proto.
Jinak treba ja osobne mam na localhostu nastavene error reporting na 15, na serveru samozrejme na 0.

Tady jde ciste o to, ze existuji i jine vyrazy nez E_ALL. Spolehat na binarni hodnotu je dost nebezpecne – definice se muze kdykoliv zmenit. Spravny zapis je spise:

error_repo rting( E_ERROR ; E_WARNING ; E_PARSE ; E_NOTICE);

Ze to funguje stejne je pravda, otazka je, co je citelnejsi a trvanlivejsi.

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836