HTML formuláře. Formulář pro odesílání dat v PHP (POST, GET)

V zásadě se pro předávání parametrů používají metody ZVEŘEJNIT A ZÍSKAT.
Hlavní rozdíl mezi metodami ZVEŘEJNIT A ZÍSKAT spočívá ve způsobu přenosu informací. V metodě ZÍSKAT parametry se předávají přes adresní řádek ( URL), tzn. PROTI HTTP-request záhlaví, zatímco v metodě ZVEŘEJNIT parametry jsou přenášeny tělem HTTP-request a nijak se neprojeví v adresním řádku.

1. Tlačítka – Tag

Štítek požadovaný.
Parametry:
zakázáno– blokuje přístup a úpravu prvku.
typ– typ tlačítka
hodnota– Hodnota tlačítka, která bude odeslána na server nebo přečtena pomocí spripů.


Parametr VYPNUTO
Blokuje přístup a úpravu tlačítka. V tomto případě se zobrazí šedě a uživatel jej nemůže aktivovat. Navíc takové tlačítko nemůže zaostřit stisknutím klávesy Tab, myší nebo jinou metodou. Tento stav tlačítka však lze změnit pomocí skriptů.

Parametr TYP
Definuje typ tlačítka, který nastavuje jeho chování na formuláři. Jednotlivé typy tlačítek se vzhledově nijak neliší, ale každé tlačítko má své vlastní funkce. Výchozí hodnota: tlačítko.
Argumenty:
tlačítko- Běžné tlačítko.
resetovat– Tlačítko pro vymazání zadaných údajů formuláře a vrácení hodnot do původního stavu.

Odeslat – Tlačítko pro odeslání dat formuláře na server.

Parametr HODNOTA Definuje hodnotu tlačítka, která bude odeslána na server. Pár " jméno=hodnota", kde název je určen parametrem name tagu

1.1. Tlačítko (typ vstupu = tlačítko)
1.2. Tlačítko s obrázkem (typ vstupu = obrázek)

Tlačítka s obrázky jsou podobná tlačítku Předložit, ale představují kresbu. K tomu jsme nastavili typ=obrázek A src="obrazek.gif".

Když uživatel klikne kamkoli na obrázek, bude na server odeslán odpovídající formulář se dvěma dalšími proměnnými − sub_x A sub_y. Obsahují souřadnice uživatele, který kliknul na obrázek. Zkušení programátoři si mohou všimnout, že názvy proměnných zaslané prohlížečem ve skutečnosti obsahují tečku spíše než podtržítko, ale PHP tečku automaticky převede na podtržítko.

1.3. Tlačítko odeslání formuláře (typ vstupu=odeslat)

Slouží k odeslání formuláře do skriptu. Při vytváření tlačítka pro odeslání formuláře musíte zadat 2 atributy: type="submit" A value="Text tlačítka" !}. Atribut name je povinný, pokud neexistuje jedno tlačítko, ale několik a všechna jsou vytvořena pro různé operace, například tlačítka „Uložit“, „Odstranit“, „Upravit“ atd. Po kliknutí na tlačítko je skriptu předán řetězec název=text tlačítka.


Není potřeba žádný PHP skript.

1.4. Pole tlačítek (odeslat) pro výběr možnosti akce
2. Tlačítko Reset

Když stisknete tlačítko reset ( resetovat), všechny prvky formuláře budou nastaveny do stavu, který byl zadán ve výchozích atributech, a formulář nebude odeslán.


Není potřeba žádný PHP skript.

3. Zaškrtávací políčko

Zaškrtávací políčka nabízejí uživateli řadu možností a umožňují libovolný výběr (žádná, jedna nebo více z nich).

Bílý
Zelený
Modrý
Červený
Černý
$go) ( echo $index." - > ".$go."
"; }; };

4. Přepínač (rádio)

Rádiové spínače nabízejí uživateli řadu možností, ale umožňují vybrat pouze jednu.
Příklad 1.

Bílý
Zelený
Modrý
Červený
Černý

Příklad 2
// první sada tlačítek
// druhá sada tlačítek
// třetí sada tlačítek
\n"; ?>

5. Textové pole (text)

Při vytváření běžného textového pole s velikostí velikosti a maximální povolenou délkou maxdélka znaků, atribut type nabývá hodnoty text. Pokud je parametr zadán hodnota, pak pole zobrazí hodnotu zadanou v proměnné. Při vytváření pole nezapomeňte uvést název pole, protože... tento atribut je povinný.

6. Pole hesla

Úplně stejné jako textové pole, až na to, že znaky zadané uživatelem se na obrazovce nezobrazí.

7. Skryté textové pole (skryté)

Umožňuje předat skriptu některé informace o službě, aniž by se zobrazily na stránce.

8. Rozbalovací seznam (vyberte)

Štítek . Tagy umožňují určit obsah seznamu a parametr hodnota definuje hodnotu řetězce. Pokud ve značce zadaný parametr vybraný, pak bude řádek zpočátku vybrán. Parametr size určuje, kolik řádků bude seznam zabírat. Li velikost rovná se 1 , pak se seznam rozbalí. Pokud je zadán atribut násobek, pak můžete vybrat více prvků ze seznamu. Ale toto schéma se prakticky nepoužívá a kdy velikost = 1 nedává smysl.

Pokud potřebujete vytvořit rozevírací seznam s předvídatelnou sekvencí. Například seznam s roky 2000 až 2050. Pak se použije následující technika.

9. Víceřádkové pole pro zadávání textu (textová oblast)

Víceřádkové textové vstupní pole umožňuje odeslat nejen jeden řádek, ale několik najednou. V případě potřeby můžete zadat atribut pouze pro čtení, který zakazuje upravovat, mazat a měnit text, tzn. text bude pouze pro čtení. Pokud je nutné, aby byl text zpočátku zobrazen ve víceřádkovém vstupním poli, musí být umístěn mezi značky .
Existuje parametr zabalit– úkol zalomení řádků. Možné hodnoty:
vypnuto– deaktivuje zalamování řádků;
virtuály– zobrazí zalomení řádků, ale odešle text tak, jak byl zadán;
fyzikální– konce řádků jsou ponechány v původní podobě.
Výchozí značka

Aby víceřádkové textové pole vyhovovalo formátování html (zalomení řádků pomocí značky
nebo
), pak použijte funkci nl2br():

10. Tlačítko pro nahrávání souborů (procházet)

Slouží k implementaci nahrávání souborů na server. Při vytváření textového pole musíte také určit typ pole typ Jak "soubor".

Nahrát soubor:

Způsoby komunikace prohlížeče se serverem

Metody poskytované protokolem HTTP, Trochu. To je důležitá informace. Jiné cesty nejsou. V praxi se používají dva:
ZÍSKAT- To je, když se data přenášejí do adresního řádku, například když uživatel klikne na odkaz.
ZVEŘEJNIT– když stiskne tlačítko na formuláři.

metoda GET

Chcete-li předávat data pomocí metody ZÍSKAT není třeba vytvářet formulář na stránce HTML (použijte formuláře pro požadavky pomocí ZÍSKAT nikdo vám v tom nebrání) - stačí odkaz na dokument s přidáním řetězce dotazu, který může vypadat jako proměnná=hodnota. Páry jsou zřetězeny pomocí ampersandu & a řetězec je připojen k adrese URL stránky pomocí otazníku " ? ».
Ale nemusíte používat páry klíč=hodnota, pokud potřebujete předat pouze jednu proměnnou – k tomu musíte za otazník napsat VALUE (ne název) proměnné.
Výhoda předávání parametrů tímto způsobem je klientům, kteří nemohou metodu používat ZVEŘEJNIT(například vyhledávače) budou i nadále moci jednoduše pomocí odkazu předávat parametry skriptu a přijímat obsah.
Chyba spočívá v tom, že pouhou změnou parametrů v adresním řádku může uživatel otočit skript nepředvídatelným způsobem, což vytváří obrovskou bezpečnostní díru v kombinaci s nedefinovanými proměnnými a register_globals zapnutý nebo někdo může zjistit hodnotu důležité proměnné (např ID-sessions), pouhým pohledem na obrazovku monitoru.
:
- pro přístup k veřejným stránkám s předáváním parametrů (vyšší funkčnost)
- přenos informací, které neovlivňují úroveň zabezpečení
:
- pro přístup k chráněným stránkám s přenosem parametrů
- přenášet informace ovlivňující úroveň zabezpečení
- pro přenos informací, které nemůže uživatel změnit (některé přenášejí text SQL dotazů.

Metoda POST

Předávejte data pomocí metody ZVEŘEJNIT To je možné pouze pomocí formuláře na stránce HTML. Hlavní rozdíl ZVEŘEJNIT z ZÍSKAT skutečnost, že data nejsou přenášena v hlavičce požadavku, ale v těle, je tedy uživatel nevidí. Můžete jej upravit pouze změnou samotného formuláře.
Výhoda:
- větší bezpečnost a funkčnost požadavků pomocí formulářů metodou POST.
Chyba:
- menší dostupnost.
Na co byste ho měli používat?:
- pro přenos velkého množství informací (text, soubory..);
- předat jakékoli důležité informace;
- omezit přístup (například použít pouze formulář pro navigaci - možnost, která není dostupná všem programům robotů nebo chytačům obsahu).
K čemu se nemá používat:

PHP je schopno přijmout soubor stažený pomocí libovolného prohlížeče. To umožňuje nahrávat textové i binární soubory. V kombinaci s PHP autentizací a funkcemi souborového systému máte úplnou kontrolu nad tím, kdo smí nahrávat soubory a co se souborem po nahrání dělat.
Stránku pro nahrání souboru lze implementovat pomocí speciálního formuláře, který vypadá asi takto:

//Formulář pro nahrávání souborů

Odeslat tento soubor:

Ve výše uvedeném příkladu "URL" musí být nahrazen odkazem na PHP skript. Skryté pole MAX_FILE_SIZE(hodnota musí být uvedena v bajtech) musí předcházet pole pro výběr souboru a jeho hodnota je maximální povolená velikost souboru, který má být přijat. Měli byste se také ujistit, že ve formuláři zadáte atributy enctype="multipart/form-data", jinak nebudou soubory nahrány na server.
Pozor
Volba MAX_FILE_SIZE je doporučení prohlížeče, i když PHP by tuto podmínku také zkontrolovalo. Obejít toto omezení na straně prohlížeče je poměrně snadné, takže byste se neměli spoléhat na tuto funkci při blokování všech větších souborů. Neexistuje však žádný způsob, jak obejít omezení maximální velikosti PHP. Stejně byste měli přidat proměnnou formuláře MAX_FILE_SIZE, protože zabraňuje uživatelům v úzkostném čekání při přenosu velkých souborů, jen aby zjistili, že soubor je příliš velký a přenos ve skutečnosti selhal.

Jak definovat metodu požadavku?

Přímo:

Getenv("POŽADAVKA_ZPŮSOB");

se vrátí ZÍSKAT nebo ZVEŘEJNIT.

Jakou metodu použít?

Pokud se formulář používá k vyžádání některých informací, například během vyhledávání, měl by být odeslán pomocí metody ZÍSKAT. Chcete-li, aby byla stránka aktuální, můžete si ji uložit do záložek a/nebo poslat odkaz příteli.
Pokud jsou v důsledku odeslání formuláře zapsána nebo změněna data na serveru, měla by být odeslána pomocí ZVEŘEJNIT a je nutné po zpracování formuláře přesměrovat prohlížeč pomocí metody ZÍSKAT. Také, ZVEŘEJNIT může být nezbytné, pokud potřebujete přenést velké množství dat na server (např ZÍSKAT je velmi omezená), stejně jako v případě, že by se přenášená data neměla „zobrazovat“ v adresním řádku (například při zadávání přihlašovacího jména a hesla).
V každém případě po zpracování ZVEŘEJNIT Vždy byste měli prohlížeč přesměrovat na nějakou stránku, i stejnou, ale bez údajů formuláře, aby se při obnovení stránky znovu nezaznamenaly.

Jak přenést data do jiného souboru přímo z těla PHP programu pomocí metod GET a POST?

Příklad demonstrující odesílání dat pomocí metod POST a GET současně a přijímání odpovědi ze serveru.

Formuláře HTML jsou složité prvky rozhraní. Zahrnují různé funkční prvky: vstupní pole A

uživatel data se odesílají takto: Atribut name je na této značce samotné. Ale atribut value na značce není

Literatura

Zaškrtávací políčko.

Na rozdíl od přepínačů je každé zaškrtávací políčko samostatným prvkem formuláře. Všechna zaškrtávací políčka jsou na sobě nezávislá a každé posílá svá data na server. Atribut name se musí u všech zaškrtávacích polí lišit a atribut value může být stejný nebo odlišný. Zaškrtávací políčko však neobsahuje žádná konkrétní data. Může být vybrán nebo ne. Proto nemá smysl nastavovat na dlouhou hodnotu. Může jí být přiřazena hodnota jednoho znaku, například 1. Na serveru bude význam této hodnoty následující: pokud existuje hodnota, pak bylo zaškrtnuto políčko, a pokud není žádná hodnota, pak je není vybráno. Pojďme do formuláře přidat zaškrtávací políčka a vytvořit tlačítko pro odeslání:

Zpracování dat z formulářů

V navrhovaném příkladu byl vytvořen formulář, který odesílá data do skriptu s názvem takeform.php. Proto musíte vytvořit tento skript. Nepůjde pouze o program, ale o stránku, která bude generována v závislosti na datech obdržených z formuláře. Formulář je odeslán metodou POST. Skript bere tato data ze superglobálního pole $_POST. Elementy pole lze jednoduše použít ve skriptu, ale pokud s nimi potřebujete hodně pracovat, pak je psaní názvu elementu pokaždé nepohodlné. Je jednodušší zapsat hodnotu do proměnné a získat k ní přístup. Vytvořme soubor takeform.php a zapišme hodnoty z prvních dvou prvků formuláře do proměnných:

takeform.php: