Formuláře, zpracování formulářů v PHP

Předpokládám, že máme vytvořený HTML formulář, který odesíláme a nyní chceme data zpracovat. O vytvoření HTML formuláře pojednává samostatný článek.

Přijmutí dat - různé způsoby

Jakým způsobem se bude formulář odesílat, se nastavuje přímo v HTML

Jsou 2 možnosti:

  • GET - Je vidět v adresním řádku za otazníkem Například: php.baraja.cz/search.php?query=formulare
  • POST - Skrytě (není vidět), přes post se posílá většina formulářů

Stejnou metodou je pak musíme v PHP přečíst.

Získání dat od uživatele a jejich přenesení do scriptu

Základem je HTML formulář, jak ho udělat se dočtete v samostatném článku.

Pro začátek předpokládejme jednoduchý formulář pro zadání jména uživatele:

<form action="welcome.php" method="GET"> 
   Zadejte jméno: <input type="text" name="username">
   <input type="submit" value="odeslat">
</form>

Zobrazí se textové pole pro zadání jména a tlačíto pro odeslání. Po kliknutí na tlačítko se obsah pole odešle na script welcome.php.

Nyní k samotnému zpracování v souboru welcome.php:

$username = $_GET['username'];

echo 'Zadané jméno je: ' . $username;

Všimněte si speciální proměnné $_GET. Jedná se o tzv. superglobální proměnnou, která obsahuje data z formuláře a lze k ní přistupovat jako k poli.

Problém tohoto řešení ovšem je, že přijmutá data nejsou zabezpečena a na podobný formulář můžeme snadno zaútočit. Potenciální útočník může do pole místo jména zadat například javascriptový kód, který bude vypsán do stránky a spuštěn.

Proto musíme jakákoli uživatelská data vždy před výstupem do HTML kódu ošetřit:

$username = $_GET['username'] ?? 'Neznámé';

echo 'Zadané jméno je: ' . htmlspecialchars($username);

Další zpracování

S přijmutými daty můžeme dělat úplně cokoli a zacházet s nimi jako s jakoukoli běžnou proměnnou.

Například sečíst hodnotu ve dvou polích:

echo $_GET['x'] + $_GET['y'];

Nebo uložit do souboru, databáze, poslat mailem, ...

K tomu se vám hodějí následující funkce:

  • file_put_contents - funkce pro uložení dat do souboru
  • MD5 - výpočet kontrolního součtu, například pro hesla
  • Cookies - uložení dat do cookies (malé soubory uvnitř webového prohlížeče)

Potřebujete poradit s PHP?

Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo přes Skype.

Napište mi: jan@barasek.com
Lektor: Jan Barášek

Pomohl Vám tento článek?

TopList counter