Výstup údajov html formulára php. Vytvorenie formulára spätnej väzby v PHP

  • 18.06.2019

Na webových stránkach často nájdete stránky s HTML formulármi. Webové formuláre predstavujú pohodlný spôsob, ako získať informácie od návštevníkov vašich webových stránok. Príkladom je -, -, ktorý poskytuje spätnú väzbu návštevníkom a vývojárom stránok. Formuláre sú vhodné aj pre vývojárov stránok pri vývoji CMS, čo vám umožňuje zachovať hlavnú vlastnosť stránky – relevantnosť. Tento článok sa zameriava na základy vytvárania HTML formulárov, ich spracovanie a ako odovzdávať údaje z formulárov na obrazovke do PHP skriptov.

1) Vytvorenie jednoduchého formulára

značky

a
nastaviť začiatok a koniec formulára. Počiatočná značka formulára
obsahuje dva atribúty: akcie a metóda. Atribút action obsahuje adresu URL skriptu, ktorý by sa mal zavolať na spracovanie skriptu. Atribút metóda informuje prehliadač, aký druh HTTP požiadavky má použiť na odoslanie formulára; možné hodnoty POST a GET.

Komentujte

Hlavným rozdielom medzi metódami POST a GET je spôsob prenosu informácií. Pri metóde GET sa parametre prenášajú cez panel s adresou, t.j. v skutočnosti v HTTP hlavičke požiadavky, zatiaľ čo pri metóde POST sa parametre prenášajú cez telo HTTP požiadavky a nijako sa neprejavia vo forme adresného riadku.

$text = nl2br($_POST["môj text"]);
?>

Úloha: Povedzme, že chceme vytvoriť rozbaľovací zoznam s rokmi od 2000 do 2050.
Riešenie: Pre spracovanie formulára je potrebné vytvoriť HTML formulár s prvkom SELECT a PHP skriptom.

Diskusia:

Začnime vytvorením dvoch súborov: form.html a action.php. V súbore form.html bude obsahovať html formulár s rozbaľovacím zoznamom. Okrem toho môžu byť hodnoty v zozname špecifikované dvoma spôsobmi:

I. Manuálne zadávanie údajov:

II. Zadávanie údajov cez slučku:

Ako vidíte, druhý príklad so slučkou je kompaktnejší. Myslím, že nemá cenu dávať skript obslužného programu formulára, pretože je spracovaný rovnako ako textové pole, t.j. hodnoty zoznamu je možné získať zo superglobálneho poľa $_POST.

Popis:

Vytvorme HTML formulár na odoslanie súboru na server.




Tento html formulár obsahuje prvok prehliadať, čím sa otvorí dialógové okno na výber súboru, ktorý sa má nahrať na server. Stlačením tlačidla "Preniesť súbor", súbor sa odovzdá skriptu obsluhy.

Potom musíte napísať obslužný program skriptu action.php. Pred napísaním handlera sa musíte rozhodnúť, do ktorého adresára skopírujeme súbor:

if(isset($_FILES [ "môj súbor" ])) // Ak súbor existuje
{
$katalog = "../obrazok/" ; // Náš adresár
if (is_dir ($catalog )) // Ak existuje taký adresár
{
$myfile = $_FILES [ "myfile" ][ "tmp_name" ]; // Temp súbor
$myfile_name = $_FILES [ "myfile" ][ "meno" ]; // Názov súboru
if(! copy ($myfile , $catalog )) echo "Chyba pri kopírovaní súboru". $myfile_name // Ak kopírovanie súboru zlyhalo
}
else mkdir("../obrazok/"); // Ak takýto adresár neexistuje, vytvoríme ho
}
?>

Komentujte

Ak dôverujete používateľom pri nahrávaní akýchkoľvek súborov na váš server, musíte byť mimoriadne opatrní. Útočníci môžu vložiť „zlý“ kód do obrázka alebo súboru a odoslať ho na server. V takýchto prípadoch musíte sťahovanie súborov prísne kontrolovať.

Tento príklad ukazuje vytvorenie adresára a skopírovanie súboru do tohto adresára na serveri.

Chcel by som tiež demonštrovať príklad s prvkom začiarkavacie políčko. Tento prvok sa mierne líši od ostatných prvkov tým, že ak nie jedným z prvkov začiarkavacie políčko'a nie je vybratá, potom superglobálna premenná $_POST vráti prázdnu hodnotu:


Modrá
čierna
biely

if (!empty($_POST [ "moja farba" ])) echo $_POST [ "moja farba" ]; // Ak je vybratá aspoň 1 položka
ozvena "Vybrať hodnotu";
?>

Jednou z najväčších predností PHP je to, ako funguje s HTML formulármi. Kľúčom je, že každý prvok formulára je automaticky sprístupnený vašim programom PHP. Viac informácií o používaní formulárov v PHP nájdete v časti. Tu je príklad HTML formulára:

Beispiel #1 Najjednoduchšia forma HTML

Tvoje meno:

Tvoj vek:

Na tejto forme nie je nič zvláštne. Toto je normálny HTML formulár bez špeciálnych značiek. Keď používateľ vyplní formulár a klikne na tlačidlo Odoslať, zavolá sa stránka action.php. Tento súbor môže obsahovať niečo ako:

Beispiel #2 Vykresľovanie údajov formulára

Ahoj, .
Vámrokov.

Ukážkový výstup z tohto programu:

Ahoj Sergey. Máte 30 rokov.

Ak neberiete do úvahy kúsky kódu s htmlspecialchars() a (int), princíp fungovania tohto kódu by mal byť jednoduchý a jasný. htmlspecialchars() zaisťuje, že „špeciálne“ znaky HTML sú správne zakódované, aby sa na vašu stránku nevložil škodlivý kód HTML alebo Javascript. Vekové pole, o ktorom vieme, že musí byť číslo, môžeme jednoducho previesť celé číslo, ktorý vás automaticky zbaví nechcených postáv. PHP to tiež dokáže automaticky s rozšírením filtra. Premenné $_POST["name"] a $_POST["age"] za vás automaticky nastaví PHP. Predtým sme používali superglobálnu hodnotu $_SERVER, ale tu používame aj superglobálnu položku $_POST, ktorá obsahuje všetky údaje POST. Všimni si spôsob odoslania(metóda) nášho formulára je POST. Ak by sme použili metódu GET, potom by naše informácie z formulára boli v superglobálnom $_GET. Prípadne môžete použiť premennú $_REQUEST, ak je zdroj údajov irelevantný. Táto premenná obsahuje kombináciu údajov GET, POST a COOKIE.

pred 15 rokmi

Podľa špecifikácie HTTP by ste mali použiť metódu POST, keď používate formulár na zmenu stavu niečoho na strane servera. Ak má napríklad stránka formulár umožňujúci používateľom pridávať vlastné komentáre, ako je tento tu, formulár by mal používať POST, čo je dôvod, prečo tieto stránky nie sú uložené v záložkách ani vo vyrovnávacej pamäti.

Metódu GET by ste mali použiť vtedy, keď váš formulár dostáva niečo zo servera a v skutočnosti nič nemení. Napríklad formulár pre vyhľadávací nástroj by mal používať GET, pretože vyhľadávanie na webovej lokalite by nemalo meniť nič, čo by klienta mohlo zaujímať, a ukladanie výsledkov dopytu vyhľadávacieho nástroja do medzipamäte je rovnako užitočné ako vytváranie záložiek alebo ukladanie do vyrovnávacej pamäte. statická HTML stránka.

pred 1 rokom

Stojí za to objasniť:

POST nie je bezpečnejšie ako GET.

Dôvody pre výber GET verzus POST zahŕňajú rôzne faktory, ako je zámer požiadavky ("odosielate" informácie?), veľkosť požiadavky (existujú limity dĺžky URL adresy a parametre GET sa odosielajú v URL) a ako jednoducho chcete, aby sa akcia dala zdieľať – napríklad vyhľadávanie Google je GET, pretože uľahčuje kopírovanie a zdieľanie vyhľadávacieho dopytu s niekým iným jednoduchým zdieľaním adresy URL.

Bezpečnosť sa tu berie do úvahy len kvôli skutočnosti, že GET je jednoduchšie zdieľať ako POST. Príklad: nechcete, aby GET posielal heslo, pretože používateľ môže zdieľať výslednú URL a neúmyselne odhaliť svoje heslo.

GET a POST sú však rovnako ľahko zachytené dobre umiestnenou škodlivou osobou, ak nenasadíte TLS/SSL na ochranu samotného sieťového pripojenia.

Všetky formuláre odoslané cez HTTP (zvyčajne port 80) sú nezabezpečené a dnes (2017) nie je veľa dobrých dôvodov na to, aby verejná webová stránka nepoužívala HTTPS (čo je v podstate HTTP + Transport Layer Security).

Ako bonus, ak používate TLS, minimalizujete riziko, že vaši používatelia dostanú kód (AD) do vašej návštevnosti, ktorý ste tam nevložili vy.

Na webových stránkach často nájdete stránky s HTML formulármi. Webové formuláre predstavujú pohodlný spôsob, ako získať informácie od návštevníkov vašich webových stránok. Príkladom toho je kniha návštev, ktorá poskytuje spätnú väzbu návštevníkom a vývojárom stránok. Formuláre sú vhodné aj pre vývojárov stránok pri vývoji CMS, čo vám umožňuje zachovať hlavnú vlastnosť stránky – relevantnosť. Tento článok sa zameriava na základy vytvárania HTML formulárov, ich spracovanie a ako odovzdávať údaje z formulárov na obrazovke do PHP skriptov.

1) Vytvorenie jednoduchého formulára

značky

a
nastaviť začiatok a koniec formulára. Počiatočná značka formulára
obsahuje dva atribúty: akcie a metóda. Atribút action obsahuje adresu URL skriptu, ktorý by sa mal zavolať na spracovanie skriptu. Atribút metóda informuje prehliadač, aký druh HTTP požiadavky má použiť na odoslanie formulára; možné hodnoty POST a GET.

Komentujte

Hlavným rozdielom medzi metódami POST a GET je spôsob prenosu informácií. Pri metóde GET sa parametre prenášajú cez panel s adresou, t.j. v skutočnosti v HTTP hlavičke požiadavky, zatiaľ čo pri metóde POST sa parametre prenášajú cez telo HTTP požiadavky a nijako sa neprejavia vo forme adresného riadku.

$text = nl2br($_POST["môj text"]);
?>

Úloha: Povedzme, že chceme vytvoriť rozbaľovací zoznam s rokmi od 2000 do 2050.
Riešenie: Pre spracovanie formulára je potrebné vytvoriť HTML formulár s prvkom SELECT a PHP skriptom.

Diskusia:

Začnime vytvorením dvoch súborov: form.html a action.php. V súbore form.html bude obsahovať html formulár s rozbaľovacím zoznamom. Okrem toho môžu byť hodnoty v zozname špecifikované dvoma spôsobmi:

I. Manuálne zadávanie údajov:

II. Zadávanie údajov cez slučku:

Ako vidíte, druhý príklad so slučkou je kompaktnejší. Myslím, že nemá cenu dávať skript obslužného programu formulára, pretože je spracovaný rovnako ako textové pole, t.j. hodnoty zoznamu je možné získať zo superglobálneho poľa $_POST.

Popis:

Vytvorme HTML formulár na odoslanie súboru na server.




Tento html formulár obsahuje prvok prehliadať, čím sa otvorí dialógové okno na výber súboru, ktorý sa má nahrať na server. Stlačením tlačidla "Preniesť súbor", súbor sa odovzdá skriptu obsluhy.

Potom musíte napísať obslužný program skriptu action.php. Pred napísaním handlera sa musíte rozhodnúť, do ktorého adresára skopírujeme súbor:

if(isset($_FILES [ "môj súbor" ])) // Ak súbor existuje
{
$katalog = "../obrazok/" ; // Náš adresár
if (is_dir ($catalog )) // Ak existuje taký adresár
{
$myfile = $_FILES [ "myfile" ][ "tmp_name" ]; // Temp súbor
$myfile_name = $_FILES [ "myfile" ][ "meno" ]; // Názov súboru
if(! copy ($myfile , $catalog )) echo "Chyba pri kopírovaní súboru". $myfile_name // Ak kopírovanie súboru zlyhalo
}
else mkdir("../obrazok/"); // Ak takýto adresár neexistuje, vytvoríme ho
}
?>

Komentujte

Ak dôverujete používateľom pri nahrávaní akýchkoľvek súborov na váš server, musíte byť mimoriadne opatrní. Útočníci môžu vložiť „zlý“ kód do obrázka alebo súboru a odoslať ho na server. V takýchto prípadoch musíte sťahovanie súborov prísne kontrolovať.

Tento príklad ukazuje vytvorenie adresára a skopírovanie súboru do tohto adresára na serveri.

Chcel by som tiež demonštrovať príklad s prvkom začiarkavacie políčko. Tento prvok sa mierne líši od ostatných prvkov tým, že ak nie jedným z prvkov začiarkavacie políčko'a nie je vybratá, potom superglobálna premenná $_POST vráti prázdnu hodnotu:


Modrá
čierna
biely

if (!empty($_POST [ "moja farba" ])) echo $_POST [ "moja farba" ]; // Ak je vybratá aspoň 1 položka
ozvena "Vybrať hodnotu";
?>




Ak máte ďalšie otázky alebo vám niečo nie je jasné, vitajte u nás

Na organizáciu prenosu údajov na server pomocou formulára budete musieť implementovať HTML formulár, do ktorého návštevníci stránky zadajú svoje informácie a PHP kód, ktorého účelom je prijať a spracovať prijaté údaje na serveri.

HTML formulár na odoslanie

Formulár na stránke tvoria značky

...
, vnútri ktorej sú umiestnené značky polí na zadávanie textových informácií, značky pre špeciálne komponenty (napríklad pole so zoznamom), značky pre pole výberu a nahrávanie súboru .

* V prípade HTML5 je tiež možné umiestniť značky poľa formulára nie do značiek formulára, ale kdekoľvek na stránke. Zároveň musí byť pre každé takéto pole špecifikovaný atribút „form“, aby bolo možné určiť, s ktorou formou podania má interagovať.

Takže najjednoduchšie odoslanie formulára môže obsahovať nasledujúci kód:


A hodnota:
B hodnota:

Prvky formulára a ich parametre:

action="myform.php"– atribút „akcia“ určuje, ktorý php súbor spracuje odoslané údaje. V tomto príklade budú údaje odoslané do súboru "myform.php" umiestneného v rovnakom adresári ako stránka formulára. Ak tento atribút nie je výslovne uvedený, údaje formulára sa odošlú na adresu stránky samotného formulára.

method="post"– parameter method definuje metódu prenosu dát POST alebo GET. Viac o tom v článku "Rozdiely medzi metódami POST a GET" . Ak atribút explicitne nešpecifikujete, štandardne sa použije metóda GET.

Text "Hodnota A:" a "Hodnota B:" pridané len za účelom dizajnu a zrozumiteľnosti formulára pre užívateľa. Pri prenose údajov to nie je potrebné pridávať, ale aby používateľ pochopil, čo má zadať, stojí za to špecifikovať.

značky sa používajú na vytváranie rôznych ovládacích prvkov formulárov.

type="text"– atribút „type“ definuje typ poľa. V závislosti od špecifikovaného typu sa mení vzhľad prvku aj jeho účel. Hodnota atribútu „text“ určuje, že prvok sa v prehliadači zobrazí ako jednoriadkové textové pole, do ktorého môže používateľ zadať svoj reťazec.

name="data1"– atribút „name“ označuje názov alebo skôr index údajov v poli prijatom serverom. Toto je povinný parameter, pomocou ktorého bude následne možné v php handleri pristupovať k odovzdanej hodnote. Názov je možné zvoliť ľubovoľne, je však vhodnejšie, keď má táto hodnota nejaký jasný význam.

type="submit"- štítok s touto hodnotou parametra "typ" sa zobrazí na stránke ako tlačidlo. V skutočnosti sa zaobídete bez tlačidla na formulári. Ak sú vo formulári napríklad textové polia, odoslanie je možné vykonať jednoduchým stlačením klávesu „Enter“ na klávesnici. Ale mať tlačidlo robí formulár prehľadnejším.

value="(!LANG:Odoslať" !}– v tomto prípade (pre type="submit") definuje len nadpis na tlačidle. Napríklad pre type="text" to bude text, ktorý sa zobrazí v textovom poli.

V dôsledku toho bude tento kód na stránke vyzerať asi takto:

A hodnota:
B hodnota:

Kliknutím na tlačidlo sa údaje odošlú na zadanú stránku a ak existuje a funguje správne, údaje sa spracujú.

Spracovanie údajov odoslaných z formulára HTML v PHP

Dáta odoslané popísaným spôsobom sú umiestnené v superglobálnych poliach $_POST, $_GET a $_REQUEST. $_POST alebo $_GET bude obsahovať údaje v závislosti od odoslanej metódy. $_REQUEST obsahuje údaje odoslané ktoroukoľvek zo špecifikovaných metód.

$_POST, $_GET a $_REQUEST sú asociatívne polia, ktorých polia indexu sa zhodujú s atribútmi „name“ značiek . Preto, aby ste mohli pracovať s údajmi v súbore myform.php, môžete hodnoty prvkov takéhoto poľa priradiť premenným zadaním názvu poľa ako indexu:

// pre metódu GET
$a = $_GET[ "údaje1" ];
$b = $_GET[ "údaje2"];

// pre metódu POST
$a = $_POST[ "údaje1" ];
$b = $_POST[ "údaje2"];

// akoukoľvek metódou
$a = $_REQUEST[ "údaje1" ];
$b = $_REQUEST[ "údaje2"];

Kontrola vyplnenia polí formulára

Niekedy pri prijímaní údajov musíte skontrolovať, či používateľ odoslal prázdny formulár. Na to môžete použiť funkciu prázdny.

if (prázdne ($_REQUEST["data1" ])) (
ozvena "Pole nie je vyplnené";
} inak(
ozvena "Pole bolo vyplnené";
$a = $_REQUEST[ "údaje1" ];
}

Zvyčajne toto riešenie postačuje. Ak potrebujete zadať text, bude jasné, či je zadaný alebo nie. Ak však používateľ zadá nulu pre výpočet zámerne, potom prázdna funkcia ukáže, že neexistuje žiadna hodnota. Preto je pre takéto situácie lepšie použiť funkciu isset. Explicitne skontroluje, či je hodnota nastavená alebo nie.

if (isset ($_REQUEST["data1" ])) (
ozvena "Pole bolo vyplnené";
$a = $_REQUEST[ "údaje1" ];
} inak(
ozvena "Pole nie je vyplnené";
}

HTML formuláre sú zložité prvky rozhrania. Zahŕňajú rôzne funkčné prvky: vstupné polia a