PHP, díl 5. – formuláře

8. března 2000
Computer 4/00 SDÍLET NA FACEBOOKU TWEETNOUT
Práce s daty z formulářů je v PHP velmi snadná. Podíváme se na jednoduché příklady.
Práce s daty z formulářů je v PHP velmi snadná. Obecně lze říci, že každý údaj předaný formulářem je na další stránce dostupný v proměnné, jejíž název je shodný s parametrem name.

Nejlepším řešením, jak situaci vysvětlit, je příklad, který nahradí zdlouhavé vysvětlování:

Na stránce 1 (stranka1.htm) je formulář se dvěma textovými vstupními poli (text a password), jedním "zatrhávacím" čtverečkem (checkbox) , dvojicí přepínacích koleček (radio) a dvěma tlačítky - pro odeslání údajů (submit) a jejich vymazání (reset):

<html>
<head>
	<title>Stránka 1 s formulářem</title>
</head>
<body>
<h3>Vyplňte prosím tento formulář</h3>
<form method=post action="stranka2.php3">
Jméno: <input type="Text" name="jmeno"><br>
Heslo: <input type="Password" name="heslo"><br>
Jste student? <input type="Checkbox" name="student" value="ano"><br>
Vaše pohlaví: <input type="Radio" name="pohlavi" value="muz" checked> muž<BR>
<input type="Radio" name="pohlavi" value="zena">žena: <br>
<input type="Submit" value="ODESLAT">
<input type="Reset" value="VYMAZAT">
</form>
</body>
</html>

Po odeslání formuláře bude zavolána stránka (stranka2.php3), ve které budeme mít v proměnné $jmeno textový řetězec z pole Jméno, v proměnné $heslo bude zadané heslo. Tady je potřeba varovat: i když se ve formuláři objevují místo textu hvězdičky, text je předáván nezašifrovaný. Pokud tedy na volané stránce použijete příkaz

echo $heslo;

vypíše se jeho obsah v celé své kráse a přečte si ho každý, kdo vám zrovna kouká přes rameno! Jestliže tento údaj hodláte třeba uložit do databáze (na ty se podíváme v dalších dílech), měli byste heslo zašifrovat. Zde přímo PHP nabízí několik funkcí (Crypt, MD5, nebo primitivní Base64).

K zatrhávacímu políčku se přistupuje takto: políčku je pomocí parametru value přiřazena hodnota "ano", která je však předána pouze v případě, že je políčko zatrženo, jinak je předán prázdný řetězec.

V praxi potom stačí na otestování jednoduchá podmínka:

if ($student=="ano") ...

U radio buttonů je situace podobná. Celá skupina má jednotný název (v tomto případě pohlavi), který je pak použit jako název proměnné, jež obsahuje hodnotu zadanou za parametrem value příslušející tomu jedinému zatrženému radio buttonu. Pokud tedy respondent je muž, proměnná $pohlavi bude obsahovat text "muz".

Další prvky, které můžete ve formulářích použít a v PHP pak zpracovat:

hidden - U tohoto prvku se zadává pouze name a value. Slouží pouze k předání "skrytých" údajů, o kterých uživatel nemusí (nebo by neměl) vědět.

Např.: <input type="hidden" name="pomocnyudaj" value="123456">

Ve formuláři, který vidí uživatel, se opticky nijak neprojeví (hidden = skrytý).

Select - Efektní možnost jak nabídnout uživateli možnost výběru z více položek. Jednotlivé položky se pak uvádějí pomocí volby option.

např.:

<select name="predplatne">
<option value="a">typ A
<option value="b">typ B
<option value="c">typ C
</select>
Pokud chceme dát uživateli možnost vybrat si najednou více položek, stačí v tagu select přidat parametr multiple. V tomto případě je ale nutno k názvu přidat hranaté závorky "[ ]".

První tag by tedy vypadal takto:

<select name="predplatne[]" multiple>

V PHP na další stránce pak budeme mít pole $predplatne.

Textarea - Tento vstupní prvek slouží k zadávání delších údajů. Jeho výhodou je, že může mít řádků a sloupců, kolik si zadáte, navíc je zde možnost rolování.

<textarea name="dlouhytext" rows=10 cols=50>   (10 řádků, 50 sloupců)
V poli může být přímo nějaký text zadaný programátorem.
</textarea>
file - Toto je vstupní prvek do "pokročilých" formulářů, kterým můžeme odeslat zároveň s formulářem nějaký soubor.

Příklad:

<form action="stranka2.php3" method=post enctype="multipart/form-data">
<input type=file name=soubor accept="image/*">
</form>
Atribut enctype udává kódování při přenosu, v tomto případě je nutný, stejně jako použití metody post.

Parametr accept udává typ souborů, které je možno přenášet (v tomto případě obrázky).

V PHP pak se souborem pracujeme s pomocí 4 proměnných, jejichž jména jsou odvozena od parametru name. V našem případě v proměnné $soubor bude jméno dočasného (je nutno ručně uložit, jinak se po skončení skriptu smaže) souboru, kam PHP data uložil. V proměnné $soubor_size bude velikost přeneseného souboru, v proměnné $soubor_type bude informace o typu souboru a v proměnné $soubor_name bude původní jméno souboru.

Na závěr
Pro přenos formulářových dat slouží dvě metody (method=post a method=get).

Metoda post se používá, pokud formulář obsahuje více dat. Typickým (a nevyhnutelným) případem je přenos souboru - viz výše.

Pro menší formuláře je možno použít metodu get, data jsou pak připojena k samotnému URL volaného skriptu, např.:

http://www.root.cz/search.phtml?word=design

Z hlediska PHP (přístup k proměnným) není mezi nimi žádný rozdíl.

Příště se začneme věnovat jazyku SQL, tedy databázím a jejich použitím pomocí PHP.

Diskuze (5) Další článek: Computer 4/00

Témata článku: Software, Programování, PHP, MD5, Díl, Textový řetězec, Radio, Reset, Celá skupina, Hidden, Button, Form, Původní jméno, Textové pole, Formulář, Select, Post, Ramen, Password, Radio 1


Určitě si přečtěte

10 míst na mapách Googlu, která nesmíte vidět. Nahradily je čtverečky

10 míst na mapách Googlu, která nesmíte vidět. Nahradily je čtverečky

** Deset míst, které nesmíte vidět ve webových mapách ** Jsou to letiště, základny i elektrárny ** Nejvíce míst tají Francie

Jakub Čížek | 21

Jakub Čížek
Mapy GoogleMapy
Šéf Spotify: Budeme zdražovat. Náš obsah se zlepšil
Markéta Mikešová
PředplatnéSpotify
Velký den pro Apple: Uvedl tři nové Macy s vlastním procesorem M1
Lukáš Václavík
PočítačeApple
Japonská MANA může být 80× výkonnější než sebelepší tranzistorový procesor

Japonská MANA může být 80× výkonnější než sebelepší tranzistorový procesor

** Tranzistory současných počítačů vyzařují při přepínání teplo ** Na Tokijské univerzitě proto vyvíjejí adiabatické procesory ** Využívají supravodivost a jsou 80× úspornější

Jakub Čížek | 44

Jakub Čížek
TranzistoryProcesoryTechnologie
Elon Musk podpořil Signal jako náhradu WhatsAppu. Aplikaci okamžitě zavalili uživatelé
Markéta Mikešová
WhatsAppElon MuskFacebook
Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

Nejlepší příslušenství k počítači. Tipy na osvědčené klávesnice, tiskárny, routery…

** Tipy na užitečné příslušenství k počítačům ** Poradíme, s jakými produkty neuděláte chybu ** Některé z věcí mohou být dobrými vánočními dárky

David Polesný, Stanislav Janů | 20

David PolesnýStanislav Janů
Příslušenství
Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

** Uspořádání kabelů můžete vnímat i jako podivný druh umění ** To nejkrásnější se skrývá v datacentrech a serverovnách ** Podívejte se na skutečné „cableporn“ z optiky i kroucené dvojlinky

Vojtěch Malý | 52

Vojtěch Malý
DatacentraServery

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5