Jeden z hlavní výhody PHP funguje s HTML formuláři. Klíčem je, že každý formulářový prvek je automaticky zpřístupněn vašim PHP programům. Pro detailní informace viz část o používání formulářů v PHP. Zde je příklad formuláře HTML:

Příklad č. 1 Nejjednodušší HTML formulář

Tvé jméno:

Tvůj věk:

Na této formě není nic zvláštního. Toto je normální HTML formulář bez speciálních značek. Když uživatel vyplní formulář a klikne na tlačítko Odeslat, bude vyvolána stránka action.php. Tento soubor může obsahovat něco jako:

Beispiel #2 Vykreslování dat formuláře

Ahoj, .
Tobělet.

Ukázkový výstup z tohoto programu:

Ahoj Sergeji. Je vám 30 let.

Pokud neberete v úvahu kousky kódu s htmlspecialchars() a (int), princip fungování tohoto kódu by měl být jednoduchý a jasný. htmlspecialchars() zajišťuje, že „speciální“ znaky HTML jsou správně zakódovány, aby na vaši stránku nebyl vložen škodlivý kód HTML nebo Javascript. Věkové pole, o kterém víme, že musí být číslo, můžeme jednoduše převést celé číslo, který vás automaticky zbaví nežádoucích postav. PHP to také umí automaticky s rozšířením filtru. Proměnné $_POST["name"] a $_POST["age"] vám automaticky nastaví PHP. Dříve jsme používali superglobal $_SERVER, ale zde také používáme superglobal $_POST, který obsahuje všechna POST data. všimněte si, že způsob odesílání(metoda) našeho formuláře je POST. Pokud bychom použili metodu DOSTAT, pak by naše informace z formuláře byly v $_GET superglobal. Případně můžete použít proměnnou $_REQUEST, pokud je zdroj dat irelevantní. Tato proměnná obsahuje kombinaci dat GET, POST a COOKIE.

před 15 lety

Podle specifikace HTTP byste měli použít metodu POST, když používáte formulář ke změně stavu něčeho na straně serveru. Pokud má například stránka formulář umožňující uživatelům přidávat vlastní komentáře, jako je tento zde, formulář by měl používat POST, což je důvod, proč tyto stránky nejsou přidány do záložek ani do mezipaměti.

Metodu GET byste měli použít, když váš formulář získává něco ze serveru a ne vlastně něco změnit. Například, formulář pro vyhledávač by měl používat GET, protože vyhledávání na webu by nemělo měnit nic, co by klienta mohlo zajímat, a ukládání do záložek nebo ukládání výsledků dotazu vyhledávače do mezipaměti je stejně užitečné jako ukládání do záložek nebo ukládání statické HTML stránky do mezipaměti.

Před 2 roky

Stojí za objasnění:

POST není bezpečnější než GET.

Důvody pro výběr GET vs. POST zahrnují různé faktory, jako je záměr požadavku ("odesíláte" informace?), velikost požadavku (existují omezení, jak dlouhá může být URL, a parametry GET se odesílají v URL) a jak snadno chcete, aby bylo možné akci sdílet – Příklad: Vyhledávání Google je GET, protože usnadňuje kopírování a sdílení vyhledávacího dotazu s někým jiným pouhým sdílením adresy URL.

Zabezpečení je zde pouze zvažováno kvůli skutečnosti, že GET je snazší sdílet než POST. Příklad: nechcete, aby GET zasílal heslo, protože uživatel může sdílet výslednou adresu URL a nechtěně odhalit své heslo.

GET a POST jsou však stejně snadno zachytitelné dobře umístěnou záškodní osobou, pokud nenasadíte TLS/SSL k ochraně samotného síťového připojení.

Všechny formuláře odesílané přes HTTP (obvykle port 80) jsou nezabezpečené a dnes (2017) není mnoho dobrých důvodů pro to, aby veřejný web nepoužíval HTTPS (což je v podstatě HTTP + Transport Layer Security).

Jako bonus, pokud používáte TLS, minimalizujete riziko, že vaši uživatelé dostanou kód (AD) do vašeho provozu, který jste tam nevložili vy.

V této lekci se seznámíme s funkcí pošta(), na příkladu tvoření formuláře zpětná vazba v PHP s následným odesláním přijatých dat poštou.

K tomu vytvoříme dva soubory - formát.php a mail.php. První soubor bude obsahovat pouze formulář s poli pro zadání uživatele. Uvnitř štítku formulář- knoflík "Poslat" a atribut akce, což odkazuje na psovoda - mail.php, právě do něj se po stisku tlačítka přistupují údaje z formuláře "Poslat". V našem příkladu jsou data formuláře odeslána na webovou stránku s názvem "/mail.php". Tato stránka obsahuje skript pro PHP který zpracovává data formuláře:


Data formuláře jsou odeslána metodou POŠTA(zpracováno jako $_POST). $_POST je pole proměnných předávaných aktuálnímu skriptu prostřednictvím metody POŠTA.

Níže vidíte obsah souboru formát.php, jejichž pole si uživatel na nějakém webu vyplní sám. Všechna pole pro zadávání dat musí mít atribut název, si hodnoty předepisujeme sami na základě logiky.




Formulář zpětné vazby v PHP s odesláním poštou


Formulář zpětné vazby v PHP







Zanechat vzkaz:
Tvé jméno:



E-mailem:

Telefonní číslo:

Zpráva:

Textová oblast může obsahovat neomezený počet znaků -->







Takto vypadá formulář vizuálně v prohlížeči.

Dále napište kód souboru mail.php. Názvy proměnných vymýšlíme sami. V PHP proměnná začíná znaménkem $ , za kterým následuje název proměnné. Textová hodnota proměnná je uzavřena v uvozovkách. Pomocí proměnných je obsah formuláře odeslán na email administrátora, a to jednoduchým dosazením prvku formuláře jméno - hodnota v hranatých závorkách název.

$to=" [e-mail chráněný]"; // email příjemce údajů z formuláře
$tema = "Kontaktní formulář PHP"; // předmět přijatého emailu
$message = "Vaše jméno: ".$_POST["jméno"]."
";//přiřadí hodnotu získanou z formuláře jméno=název proměnné
$message .= "E-mail: ".$_POST["e-mail"]."
"; //získáno z formuláře jméno=e-mail
$message .= "Telefonní číslo: ".$_POST["telefon"]."
"; //získáno z formuláře jméno=telefon
$message .= "Zpráva: ".$_POST["zpráva"]."
"; //získáno z formuláře jméno=zpráva
$headers = "MIME verze: 1.0" . "\r\n"; // záhlaví odpovídá formátu plus znaku nového řádku
$headers .= "Typ obsahu: text/html; charset=utf-8" . "\r\n"; // označuje typ odesílaného obsahu
mail($to, $tema, $zpráva, $záhlaví); //odešle hodnoty proměnných na e-mail příjemce
?>

Tedy data z pole $_POST budou předány odpovídajícím proměnným a odeslány na e-mail pomocí funkce pošta. Vyplňte náš formulář a stiskněte tlačítko Odeslat. Nezapomeňte uvést svůj e-mail. Dopis přišel okamžitě.

JavaScript je ve vašem prohlížeči blokován. Povolit JavaScript pro tento web!

Práce s formuláři

HTML formuláře se používají k odesílání dat od uživatele webové stránky na server. PHP poskytuje řadu speciálních nástrojů pro práci s formuláři.

Předdefinované proměnné

PHP má řadu předdefinovaných proměnných, které se nemění, když všechny aplikace běží v určitém prostředí. Nazývají se také proměnné prostředí nebo proměnné prostředí. Odrážejí nastavení prostředí webového serveru Apache a také informace o požadavku. tento prohlížeč. Je možné získat hodnoty adresy URL, řetězce dotazu a dalších prvků požadavku HTTP.

Všechny předdefinované proměnné jsou obsaženy v asociativním poli $GLOBALS. Kromě proměnných prostředí obsahuje toto pole také globální proměnné definované v programu.

Příklad 1

Zobrazení pole $GLOBALS $value) echo "\$GLOBALS[\"$key\"] == $hodnota
"; ?>

V důsledku toho se na obrazovce objeví seznam všech globálních proměnných, včetně proměnné prostředí. Nejčastěji používané jsou:

VariabilníPopisObsah
$_SERVER["HTTP_USER_AGENT"]Jméno a verze klientaMozilla/5.0 (kompatibilní; Googlebot/2.1; +http://www.google.com/bot.html)
$_SERVER["REMOTE_ADDR"]IP adresa144.76.78.3
getenv("HTTP_X_FORWARDED_FOR")Interní IP adresa klienta
$_SERVER["REEQUEST_METHOD"]Metoda požadavku (GET nebo POST)DOSTAT
$_SERVER["QUERY_STRING"]Při požadavku GET byla zakódovaná data předána spolu s adresou URL
$_SERVER["REQUEST_URL"]Úplná adresa klienta včetně řetězce dotazu
$_SERVER["HTTP_REFERER"]URL stránky, ze které byl požadavek podán
$_SERVER["PHP_SELF"]Cesta ke spustitelnému programu/index.php
$_SERVER["SERVER_NAME"]Doménawebová stránka
$_SERVER["REQUEST_URI"]Cesta/php/php_form.php

Zpracování uživatelského vstupu

Ovladač vstupu PHP lze oddělit od textu HTML obsahujícího vstupní formuláře nebo umístit na stejnou stránku.

Příklad 2

Příklad zpracování vstupu

"method="post">

Číslo karty:

Není zde žádné tlačítko pro přenos dat, protože. formulář skládající se z jednoho pole se automaticky odešle po stisku klávesy .

Při zpracovávání prvku s vícehodnotovým výběrem je třeba k názvu prvku přidat pár hranatých závorek, aby bylo možné získat přístup ke všem vybraným hodnotám. Chcete-li vybrat více položek, podržte klávesu Ctrl.

Příklad 3.1

Seznam

PŘÍKLAD 3.1 VÝSLEDEK:

Příklad 3.2

Seznam zpracování ze souboru ex1.htm

    "; foreach ($Item jako $value) echo"
  • $value"; echo"
"; ?>

Příklad 4. Přijetí hodnot ze zaškrtávacích políček

$v) ( if($v) echo "Znáte programovací jazyk $k!
"; else echo "Neznáte programovací jazyk $k.
"; } } ?>
" method="post"> Jaké programovací jazyky znáte?
PHP
Perl

PŘÍKLAD 4 VÝSLEDEK:

Příklad 5

"; ?>
"method="post">

Je možné zpracovávat formuláře, aniž byste se starali o skutečné názvy polí.

K tomu můžete použít (v závislosti na metodě přenosu) asociativní pole $HTTP_GET_VARS nebo $HTTP_POST_VARS . Tato pole obsahují dvojice název/hodnota pro každý prvek odeslaného formuláře. Pokud je vám to jedno, můžete použít asociativní pole $_REQUEST.

Příklad 6

Zpracování libovolného vstupu bez ohledu na způsob přenosu $value) echo "$klíč == $hodnota
"; ?>

Příklad 7. Zpracování kliknutí na tlačítko pomocí operátoru "@".

">

Pomocí funkce header(), odesláním záhlaví "Umístění" prohlížeči, můžete uživatele přesměrovat na novou stránku.

Například:

Přenos souboru na server. Nahrát soubor. Nahrát

PHP umožňuje posílat soubory na server. HTML formulář pro odeslání souboru musí obsahovat argument enctype="multipart/form-data" .

Kromě toho musí mít formulář před polem pro kopírování souboru skryté pole s názvem max_file_size. Toto skryté pole by mělo obsahovat maximální velikost přenášeného souboru (obvykle ne více než 2 MB).

Samotné pole přenosu souboru je normální prvek INPUT s argumentem type="file" .

Například:

"method="post">

Po nahrání souboru na server je mu přidělen jedinečný název a uložen do dočasného adresáře. Úplná cesta k souboru se zapíše do globální proměnné, jejíž název odpovídá názvu pole pro přenos tohoto souboru. Kromě toho PHP ukládá některé další informace o předávaném souboru do dalších globálních proměnných:

Příklad 8

Zpracování přeneseného souboru "; echo "name: ".$_FILES["userfile"]["name"]."
"; echo "velikost: ".$_FILES["userfile"]["velikost"]."
"; echo "type: ".$_FILES["userfile"]["type"]."
"; } ?>
"method="post">

Příklady nahrávání souborů na server

Pokud se vyskytnou problémy s konverzí nahraného souboru serverem, symbol s kódem 0x00 nahrazeno mezerou (znak s kódem 0x20), přidejte do souboru httpd.conf z adresáře Apache (/usr/local/apache) následující řádky.

CharsetRecodeMultipartForms vypnuto