From Wikipedia, the free encyclopedia
Webový formulář je v informatice označení pro speciální vstupní prvky zobrazitelné ve webovém prohlížeči, které umožňují uživateli odeslat data na webový server, kde jsou následně zpracována. Webové formuláře se podobají klasickým papírovým nebo databázovým formulářům – obsahují vstupní pole pro text, přepínače, vyskakovací menu i tlačítka. Formulář může být použit například pro odeslání dodací adresy, vyplněné objednávky nebo při vyhledání části textu na webové stránce.
Webové formuláře jsou definovány ve formálních programovacích jazycích jako HTML, Perl, PHP, Java, Javascript nebo .NET (včetně ASP.NET). Implementace formulářů v těchto jazycích často automaticky využívá styly uživatelského rozhraní, jako jsou mřížky, minimalizuje programovací čas, náklady a rizika.
Formulář v XHTML nebo HTML je nejběžnější způsob online použití. Formulář může být vytvořen pomocí následujících prvků:
Na obrázku vpravo jsou zobrazeny následující elementy:
XForm je alternativní standard navržený pro reprezentaci nové generace HTML/XHTML formulářů. Tento standard je dostatečně obecný, aby mohl být použitý samostatným způsobem nebo při prezentaci v jiných jazycích než HTML nebo XHTML. Na rozdíl od HTML/XHTML používá XForms návrhového vzoru Model-view-controller.
Xform dokument může být stejně jednoduchý jako HTML/XHTML formulář. Oproti nim však nabízí mnoho pokročilých vlastností. Formulář může například reagovat v reálném čase a získávat vkládané informace už během zobrazení formuláře, bez použití samostatných skriptovacích jazyků. Formulář může specifikovat jak mají být data ověřena, nebo jaké části formuláře se mohou měnit v závislosti na vložených datech v jiné části formuláře.
Standard XForms v současnosti není podporován v dostupných webových prohlížečích.
Formuláře mohou být propojeny s různými skriptovacími jazyky, které umožňují vytvořit dynamické webové stránky.
Za standardní jazyk pro skriptování na straně klienta je de facto považován jazyk JavaScript. JavaScript využívá DOM, což umožňuje dynamické chování a změny webové stránky v prohlížeči.
Jelikož jsou možnosti jazyků pro skriptování na straně klienta v kombinaci s formuláři omezené, často slouží pro ověření správnosti dat ještě před odesláním na server. Také se používají k předzpracování dat před jejich předáním aplikaci na serveru (např. pro uložení do databáze).
Programy spouštěné na straně serveru mohou vykonávat širokou škálu příkazů za účelem vytvoření dynamických webových stránek – přes autentizaci přihlašovacích údajů (např. LDAP), načítání a ukládání dat v databázích, kontrolu pravopisu až po odesílání e-mailů). Některé skripty prováděné na straně serveru musí projít přes rozhraní CGI (Common Gateway Interface), aby mohly splnit požadovaný úkol.
Výhodou skriptování na straně serveru je přenesení funkcionality na jeden počítač (server) namísto spoléhání na různé implementace stejných funkcí v mnoha webových prohlížečích.
Běžně jsou aplikace používané na webových stránkách psané ve skriptovacích jazycích. Je ale také možné použít kompilované jazyky.
Některé z běžně používaných skriptovacích jazyků:
Některé z běžně používaných kompilovaných jazyků:
PHP je jeden z nejběžněji používaných jazyků pro psaní webových aplikací na straně serveru a je jeden z mála jazyků určených právě pro serverové aplikace.
PHP skript může:
Hodnota atributu action určuje soubor, který zpracuje odeslaná data. Cílový PHP soubor obdrží data pomocí metody POST nebo GET. V příkladu je ukázán jednoduchý formulář, který předá uživatelské jméno pomocí metody GET.
form.html
<html>
<body>
<form action="form_handler.php" method="get">
Uživatelské jméno: <input name="user" type="text" />
<input type="submit" />
</form>
</body>
</html>
form_handler.php
<html>
<body>
<?php
/*
* Tento skript vypíše text, který byl odeslán pomocí formuláře na stránce form.html.
*/
$name = $_GET['user'];
echo "Hello, ". $name ."!";
?>
</body>
</html>
Ve výše uvedeném skriptu je nutné použít příkaz $_GET[''] nebo $_POST[''] podle toho, která metoda byla použita ve formuláři, zatímco $_REQUEST[''] je možné použít pro obě metody. Hodnota atributu input name="" HTML formuláře musí být shodná s hodnotou indexu $GET[''].
Pomocí neošetřených vstupů ve formulářích lze provádět útoky na webové stránky. Patří mezi ně Cross-site scripting (XSS) a SQL injection.
Jedná se o vložení části škodlivého kódu do napadené stránky. V případě, kdy není ošetřen vstup formuláře, je možné odeslat speciální znaky (např. <
a >
). Pokud je takovýto text následně vypsán na webové stránce, považuje ho prohlížeč za součást html kódu a vykreslí ho do výsledné stránky. Proto je nutné takovéto znaky zaměnit za správné html entity (např. <
za <
).
Tento typ útoku se zaměřuje na databáze. Pokud není ošetřen vstup formuláře, pomocí kterého se odesílají data do databáze, je možné odeslat místo předpokládaného vstupu, část SQL příkazu. Pokud je tato část příkazu vhodně sestavena může být při následném odeslání pochopena databází jako součást původního příkazu. Databáze pak může provést zcela jinou akci než původně programátor zamýšlel. Pomocí tohoto útoku se dá například získat přístup k datům v databázi nebo ji úplně vymazat.
V tomto článku byl použit překlad textu z článku Form (web) na anglické Wikipedii.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.