Manipulace s formuláři PHP
PHP superglobály $_GET a $_POST se používají ke sběru dat z formulářů.
PHP – jednoduchý HTML formulář
Níže uvedený příklad zobrazuje jednoduchý HTML formulář se dvěma vstupními poli a tlačítkem Odeslat:
Příklad
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Když uživatel vyplní výše uvedený formulář a klikne na tlačítko Odeslat, data formuláře se odešlou ke zpracování do souboru PHP s názvem „welcome.php“. Data formuláře se odesílají metodou HTTP POST.
Chcete-li zobrazit odeslaná data, můžete jednoduše zopakovat všechny proměnné. Soubor "welcome.php" vypadá takto:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
Výstup by mohl být něco takového:
Welcome John
Your email address is [email protected]
Stejného výsledku lze dosáhnout také pomocí metody HTTP GET:
Příklad
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
a "welcome_get.php" vypadá takto:
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
Výše uvedený kód je poměrně jednoduchý. To nejdůležitější však chybí. Chcete-li skript chránit před škodlivým kódem, musíte ověřit data formuláře.
Myslete na BEZPEČNOST při zpracování formulářů PHP!
Tato stránka neobsahuje žádné ověřování formulářů, pouze ukazuje, jak můžete odesílat a získávat data formuláře.
Následující stránky však ukážou, jak zpracovávat formuláře PHP s ohledem na bezpečnost! Správné ověření dat formuláře je důležité pro ochranu formuláře před hackery a spammery!
GET vs. POST
GET i POST vytvářejí pole (např. pole( klíč1 => hodnota1, klíč2 => hodnota2, klíč3 => hodnota3, ...)). Toto pole obsahuje páry klíč/hodnota, kde klíče jsou názvy ovládacích prvků formuláře a hodnoty jsou vstupní data od uživatele.
GET i POST jsou považovány za $_GET a $_POST. Jedná se o superglobály, což znamená, že jsou vždy přístupné, bez ohledu na rozsah – a můžete k nim přistupovat z jakékoli funkce, třídy nebo souboru, aniž byste museli dělat něco zvláštního.
$_GET je pole proměnných předávaných aktuálnímu skriptu prostřednictvím parametrů URL.
$_POST je pole proměnných předávaných aktuálnímu skriptu pomocí metody HTTP POST.
Kdy použít GET?
Informace odeslané z formuláře metodou GET jsou viditelné všem (všechny názvy a hodnoty proměnných jsou zobrazeny v URL). GET má také omezení na množství informací k odeslání. Omezení je asi 2000 znaků. Protože se ale proměnné zobrazují v URL, je možné stránku přidat do záložek. To může být v některých případech užitečné.
GET lze použít pro odesílání necitlivých dat.
Poznámka: GET by se NIKDY neměl používat k zasílání hesel nebo jiných citlivých informací!
Kdy použít POST?
Informace odeslané z formuláře metodou POST jsou pro ostatní neviditelné (všechna jména/hodnoty jsou vnořeny do těla požadavku HTTP) a nemají žádná omezení na množství informací k odeslání.
Navíc POST podporuje pokročilé funkce, jako je podpora vícedílného binárního vstupu při nahrávání souborů na server.
Protože se ale proměnné v URL nezobrazují, není možné stránku přidat do záložek.
Vývojáři preferují POST pro odesílání dat formuláře.
Dále se podívejme, jak můžeme zpracovat formuláře PHP bezpečným způsobem!