Zpracování formulářů v PHP

Začínající autory stránek vždycky mrzí, že zajištění funkčnosti formulářů není žádná sranda. Jakmile ale pochopíte základy formulářů (včetně způsobu, kterým předávají data přes adresu), zpracování v PHP bude relativně snadné. 

Příklad

Budu mít dva soubory

  1. formular1.html s jedním vstupním polem (úplně obyčejné HTML)
  2. zpracovani_formulare1.php

Soubor formular1.html (Vypisuji bez hlaviček.):

<body>
<form method="GET" action="zpracovani_formulare1.php" >
<p>Zadejte oblíbené jídlo: 
<input type="text" name="jidlo" size="20"> 
<input type="submit" value="Odeslat"></p>
</form>
</body>

A soubor zpracovani_formulare1.php:

<body>
<H1>Zpracování formuláře</h1>
<p>Výborně! Zajdeme si někdy na čaj a k tomu si dáme 
<? echo $_GET["jidlo"] ?>!
</body>

Příklad si můžete zobrazit (pozn.: pokud mi na serveru neběží PéHáPka, nebude to fungovat).

Všimněte si prosím těchto věcí:

  1. Formulář má nastavenou action na jméno php souboru, který to bude zpracovávat. 
  2. Ten PHP soubor obsahuje jak obyčejné HTML (<p>Výborně...), tak PHP kód oddělený znaky <? a ?>. Vše, co je mezi nimi, je PHP program, který server vyhodnocuje (to je to echo $_GET["jidlo"]).
  3. Formulář obsahoval vstupní pole (<input>) se jménem name="jidlo". PHP skript přebírající formulář si vytvoří pole automaticky založí pole $_GET, které obsahuje klíč jidlo. Takže $_GET["jidlo"] bude obsahovat to, co uživatel před odesláním zadal do pole formuláře s názvem jidlo. (Ten dolar $ je pro PHP označení, že jde o proměnnou.)

PHP příkaz echo pak už jenom vypíše hodnotu proměnné a celé to odešle prohlížeči. (Samozřejmě se s tou proměnnou dají dělat i úpravy, např. zjistit, zda není prázdná atd. PHP má celou řadu příkazů. PHP má celkem mohutné možnosti práce s proměnnými. Cokoli, co začíná znakem $, je v PHP proměnná.)

Ještě jednou obrázkem:

Více formulářových polí

V příkladu jsem zatím měl jediné formulářové políčko (to jídlo). Ve formuláři můžu mít políček kolik chci. Jediné, co je důležité, aby měly rozdílná jména, tj. atribut name. Formulář potom při odesílání seskládá proměnné do URL za sebe a oddělí je znakem &. Například:

zpracovani-formular.php?jidlo=ryby&piti=sodovka&kytky=ruze

V PHP následně není potřeba se o nějaký znak & starat: ve skriptu budou v pohodě dostupné proměnné $_GET["jidlo"], $_GET["piti"] a $_GET["kytky"]. Také nezáleží na pořadí, ve kterém jsou v URL proměnné uvedeny.

Jak to někam uložit

V tomhle článku probírám jenom jednoduchou komunikaci formulářů s php skripty. Takže nebudu popisovat ukládání, jenom naznačím, jak se to dělá.

Asi chápete, že jakmile už má PHP skript na serveru hodnotu z formuláře, může s ní dělat úplně cokoliv. Já jsem v příkladu ukázal tu nejjednodušší věc -- vypsání do stránky. PHP ale tu hodnotu může zapsat do databáze, do souboru na serveru, poslat ji mailem, nebo něco jiného.

Pro zapisování do databáze hledejte ve vyhledávači něco jako PHP SQL insert into. Databáze jsou trochu složitější, malinko jsem je nakousnul v článku Možnosti PHP a Vytvoření databáze a tabulky v MySQL, ale přímo vkládání do databáze zatím nepopisuji nikde.

Zapisování do souboru se v PHP dělá příkazem fwrite().

Posílání mailem se dělá příkazem mail().

Odesílání přes POST

Když se formulář odesílá metodou post, místo $_GET se musí psát $_POST. Get je výchozí metoda, takže pro první pokusy si vystačíte s $_GET. Přes POST se posílají až větší data, typicky dlouhé texty, maily apod.

Zatímco při metodě GET komunikují stránky pomocí URL v prohlížeči (query string za otazníkem), při metodě POST cestují data úplně jiným požadavkem. Ovšem zpracování v PHP je úplně stejné. Jediný rozdíl ej to $_POST[] namísto $_GET[].

Aby se posílalo metodou POST, je potřeba v HTML nastavit u tagu <form> atribut method na hodnotu "post":

<form action="zpracovani.php" method="post">

Prastaré proměnné $nazev

V PHP do verze 3 stačilo namísto $_GET["jidlo"] napsat $jidlo. To ale je potenciálně nebezpečné, protože potom by šlo aplikaci vnutit libovolnou proměnnou, kterou by útočník uvedl v URL za otazníkem. Proto se to musí zadávat takhle složitěji s podtržítkem a závorkami.

Tolik jenom drobný nástin o zpracování formulářů v PHP. 

Stránka vytvořena 17. 2. 2016

 

Reklama

www.webhosting-c4.cz, webhosting s doménou v ceně. 20GB
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Encyklopedie FrontPage Reklama PHP Server

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.