Domov›Služby›HTML formuláře. Formulář pro odesílání dat v PHP (POST, GET)
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 vytváří tlačítka na webové stránce a jejich akce se podobá výsledku získanému pomocí značky (s parametrem type="button | reset | odeslat"). Na rozdíl od této značky nabízí pokročilé možnosti pro vytváření tlačítek. Například na takové tlačítko můžete umístit libovolné HTML prvky včetně obrázků. Pomocí stylů můžete definovat vzhled tlačítka změnou písma, barvy pozadí, velikosti a dalších parametrů. Teoreticky značka musí být umístěn uvnitř formuláře nastaveného prvkem . Prohlížeče však nezobrazují chybovou zprávu a s tagem pracují správně , pokud se vyskytuje nezávisle. Pokud však potřebujete odeslat výsledek kliknutí na tlačítko na server, umístěte do kontejneru Nutně. Uzavírací š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 a hodnota je parametr hodnota. Význam se může shodovat s textem na tlačítku nebo být nezávislý. Také parametr hodnota slouží k přístupu k datům prostřednictvím skriptů.
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.
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).
$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.
Příklad 2
\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 je rozevírací nebo rozbalený seznam a lze vybrat jeden nebo více řádků současně. Hodnota však bude předána poslednímu vybranému tlačítku. Seznam začíná spárovanými značkami . 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 vytvoří prázdné pole o šířce 20
znaky a skládající se z 2
linky.
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".
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ů
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.
$url = "http://test.ru/patch/file.php?var=23&var2=54";
$parse_url = parse_url($url);
$path = $parse_url["path"]; // путь до файла (/patch/file.php)
if($parse_url["query"]) // если есть список параметров
$path .= "?" . $parse_url["query"]; // добавляем (?var=23&var2=54)
$host= $parse_url["host"]; // тут получаем хост (test.ru)
$data = "var3=test&var4=".urlencode("еще тест");
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if ($fp)
{
$out = "POST ".$path." HTTP/1.1\n";
$out .= "Host: ".$host."\n";
$out .= "Referer: ".$url."/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";
fputs($fp, $out); // отправляем данные
while($gets=fgets($fp,2048)) // читаем данные построчно и выводим их.
{
print $gets;
}
fclose($fp);
}
?>
Formuláře HTML jsou složité prvky rozhraní. Zahrnují různé funkční prvky: vstupní pole A
Většina informací z webového formuláře je přenášena pomocí prvku . Chcete-li zadat jeden řádek textu, použijte prvek , pro více řádků - prvek
Živel
PříjmeníPříjmeníPříjmení
Pole formuláře lze pomocí prvku rozdělit do logických bloků
Oblíbené v kategorii:
Jak sloučit vrstvy ve Photoshopu do jedné nebo je spojit do skupiny...