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řest 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'];

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)
Sponzorované odkazy
Pomohl Vám tento článek?