Kontakty

Výstupný formulár odoslal údaje do php. Tvorba HTML formulárov. II. Zadávanie údajov prostredníctvom slučky

Na zorganizovanie prenosu údajov na server pomocou formulára budete musieť implementovať formulár HTML, do ktorého budú návštevníci stránok zadávať svoje informácie a kód PHP, ktorých účelom je prijímať a spracovávať prijaté údaje na serveri.

HTML formulár na odosielanie údajov

Formulár na stránke tvoria značky

...
, do ktorého sú umiestnené značky pre polia na zadávanie textových informácií, značky pre špeciálne komponenty (napríklad kombinované pole), značky pre výberové pole a nahrávanie súborov.

* V prípade HTML5 je tiež možné umiestniť značky polí formulára nie do značiek formulárov, ale kdekoľvek na stránku. Okrem toho pre každé takéto pole musíte zadať atribút „formulár“, aby ste určili, s ktorou formou odoslania by mal interagovať.

Najjednoduchší formulár na odoslanie môže teda obsahovať nasledujúci kód:


Hodnota A:
Hodnota B:

Prvky formulára a ich parametre:

action = "myform.php"- atribút "action" definuje, ktorý php súbor bude spracovávať odoslané údaje. V tomto prípade budú údaje odoslané do súboru "myform.php" umiestneného v rovnakom adresári ako stránka s formulárom. Ak tento atribút nie je výslovne uvedený, údaje formulára budú odoslané na adresu stránky samotného formulára.

metóda = "príspevok"- parameter metódy definuje spôsob prenosu údajov POST alebo GET. Prečítajte si o tom viac v článku „Rozdiely medzi metódami POST a GET“. Ak atribút výslovne neurčíte, predvolene sa použije metóda GET.

Text "Význam A:" a "Hodnota B:" doplnené iba za účelom dizajnu a prehľadnosti formulára pre používateľa. Na prenos údajov to nie je potrebné pridávať, ale aby používateľ pochopil, čo má zadať, stojí za to špecifikovať.

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

typ = "text"- atribút "type" definuje typ poľa. V závislosti od toho, ktorý typ je zadaný, sa vzhľad prvku a jeho účel menia. Hodnota atribútu „text“ naznačuje, že prehliadač vykreslí prvok 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 požadovaný parameter, pomocou ktorého je potom možné získať prístup k odovzdanej hodnote v obslužnom programe php. Názov je možné zvoliť ľubovoľne, je však pohodlnejšie, keď má táto hodnota nejaký zrozumiteľný význam.

typ = "odoslať"- značka s touto hodnotou parametra „typ“ sa na stránke zobrazí ako tlačidlo. V skutočnosti sa môžete obísť bez tlačidla vo formulári. Ak napríklad formulár obsahuje textové polia, odoslanie je možné vykonať jednoduchým stlačením klávesu „Enter“ na klávesnici. Vďaka tlačidlu je však formulár zrozumiteľnejší.

value = "(! LANG: Odoslať" !}- v tomto prípade (pre typ = "odoslať") definuje iba popis na tlačidle. Pre typ = "text" to bude napríklad text, ktorý sa zobrazí v textovom poli.

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

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

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

Takto odoslané údaje sú umiestnené do superglobálnych polí $ _POST, $ _GET a $ _REQUEST. $ _POST alebo $ _GET bude obsahovať údaje v závislosti od toho, ktorá metóda bola použitá na odoslanie. $ _REQUEST obsahuje odoslané údaje 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 na prácu s údajmi v súbore myform.php môžete premenným priradiť hodnoty prvkov takéhoto poľa zadaním názvu poľa ako indexu:

// pre metódu GET
$ a = $ _GET [ "data1"];
$ b = $ _GET [ "data2"];

// pre metódu POST
$ a = $ _POST [ "data1"];
$ b = $ _POST [ "data2"];

// pre akúkoľvek metódu
$ a = $ _REQUEST [ "data1"];
$ b = $ _REQUEST [ "data2"];

Kontrola vyplnenia polí formulára

Pri prijímaní údajov je niekedy potrebné skontrolovať, či používateľ odoslal prázdny formulár. Na to môžete použiť funkciu prázdny.

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

Obvykle je toto riešenie dostačujúce. Ak potrebujete zadať text, bude zrejmé, či je zadaný alebo nie. Ak však užívateľ zámerne zadá pre výpočty nulu, potom prázdna funkcia ukáže, že neexistuje žiadna hodnota. Preto je pre takéto situácie lepšie použiť funkciu isset. Výslovne skontroluje, či je hodnota daná alebo nie.

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

alebo ako odoslať e-mailovú správu pomocou formulára HTML

Máte svoju vlastnú webovú stránku a chcete dostávať listy alebo správy od svojich používateľov, otázky, rady alebo priania e-mailom, potom je táto lekcia pre vás!

Ako poslať správu e-mailom

Potrebujeme nasledujúce súbory:

  1. form.html - stránka s formulárom.
  2. form_processing.php - súbor skriptu, spracovanie HTML formulára.

Zvážte kód form.html:

Spracovanie HTML formulára v PHP



Tvoje meno:


E -mail:


Téma:


Správa:







HTML formulár obsahuje polia na zadanie mena, poštovej adresy používateľa, predmetu správy, textu správy a tlačidla „Odoslať“, po kliknutí na ktoré sa informácia odošle na spracovanie do PHP skript v súbore form_processing.php.

Metóda prenosu hypertextu má dva významy: get (predvolený) a post. Metóda post sa používa častejšie, pretože vám umožňuje prenášať veľké množstvo údajov. Všetky hodnoty odoslané do skriptu na spracovanie pomocou metódy post sú uložené v asociatívnom poli $ _POST (toto pole je pôvodne vstavané v prekladači php), ktoré pozostáva z premenných $ _POST, kde názov je skutočný názov vstupu pole - hodnota atribútu name = "":

Vytvorme obslužný súbor form_processing.php:

/ * Kontrolujeme vstupné údaje a chránime ich pred nepriateľstvom
skripty * /
$ your_name = htmlspecialchars ($ _POST ["your_name"]);
$ email = htmlspecialchars ($ _POST ["email"]);
$ tema = htmlspecialchars ($ _POST ["tema"]);
$ message = htmlspecialchars ($ _POST ["správy"]);
/ * Nastaviť e-mail príjemcu * /
$ myemail = " [chránené e -mailom]" ;
/ * Pomocou check_input skontrolujte, či sú vyplnené požadované vstupné polia
funkcia * /
$ your_name = check_input ($ _POST ["your_name"], "Zadajte svoje meno!");
$ tema = check_input ($ _POST ["tema"], „Zadajte predmet správy!“);
$ email = check_input ($ _POST ["email"], "Zadajte svoj e-mail!");
$ message = check_input ($ _POST ["message"], „Zabudol si napísať správu!“);
/ * Skontrolujte, či je e-mail napísaný správne * /
if (! preg_match ( "/((\ w \->+\@ [\ w \->+\. [\ w \-\+)/", $ email))
{
show_error ( "
E -mailová adresa neexistuje "
);
}
/ * Vytvorte novú premennú priradením jej hodnoty * /
$ message_to_myemail = "Ahoj!
Vášmu kontaktnému formuláru bola odoslaná správa!
Meno odosielateľa: $ your_name
E-mail: $ email
Text správy: $ message
Koniec"
;
/ * Odoslať správu pomocou funkcie mail () * /
$ od = "Od: $ vaše meno<$email>\ r \ n Odpoveď na: $ email \ r \ n ";
mail ($ myemail, $ tema, $ message_to_myemail, $ from);
?>

Vaša správa bola úspešne odoslaná!


Domov >>>


/ * Ak sa pri vypĺňaní formulára vyskytli chyby, bude to fungovať
nasledujúci kód: * /
funkcia check_input ($ data, $ problem = "")
{
$ data = trim ($ data);
$ data = strihy ($ data);
$ data = htmlspecialchars ($ data);
if ($ problem && strlen ($ data) == 0)
{
show_error (problém $);
}
vrátiť $ dáta;
}
funkcia show_error ($ myError)
{
?>


Opravte nasledujúcu chybu:







východ ();
}
?>

Sekcia kódu:

- zobrazí zadaný text, ak sú v poliach HTML formuláre boli vyplnené správne index.php je domovská stránka vášho webu.

Sekcia kódu:

- uvedie povahu chyby.

Variabilná hodnota:

$ od = "Od: $ vaše meno<$email>\ r \ n Odpoveď na: $ email \ r \ n ";
?>

- pri písaní odpovede automaticky zobrazí e-mail používateľa v správnom riadku.

PHP formulár - Práca s formulármi v PHP je ôsma lekcia tutoriálu PHP. V tomto návode si povieme niečo o spracovaní formulárov pomocou PHP.

Práca s formulármi

PHP vám umožňuje spracovávať údaje, ktoré používateľ zadal do polí formulára. Po aktivácii tlačidla odoslania sa údaje odošlú na stránku obsluhy uvedenú v poli akcie prvku

... Na stránke - obsluha je skript PHP, ktorý vykonáva určité operácie s prijatými údajmi, napríklad generuje a odosiela písmeno podľa podrobností uvedených používateľom.

Odovzdávanie údajov obsluhe.

Údaje z formulára sú odoslané na server ako postupnosť dvojíc názov / hodnota. To znamená, že názov každého prvku formulára (ktorý je uvedený v atribúte NAME značky) je spojený s hodnotou tohto prvku (zadaného alebo vybratého používateľom). Formát názvu / hodnoty použitý na prenos je názov = hodnota.

Všetky údaje odovzdané z formulára do programu obsluhy sa nachádzajú v nasledujúcich superglobálnych poliach: $ _ GET, $ _POST a $ _REQUEST.

$ _GET - obsahuje všetky hodnoty odovzdané metódou GET.

$ _POST - Obsahuje všetky hodnoty odovzdané metódou POST.

$ _REQUEST - obsahuje všetky hodnoty odovzdané metódami POST a GET.

Priezvisko:

Mesto:

Správa:

Po stlačení tlačidla Predložiť tohto formulára sú všetky údaje odovzdané obsluhe process.php ... Pretože tento formulár používa metódu POST , potom budú všetky premenné umiestnené vo vnútri poľa$ _POST.

Teraz vytvoríme handler:

echo "Meno: “. $ _POST ["FName"]. "
»;
echo "Priezvisko: “. $ _POST ["LName"]. "
»;
echo „Mesto: “. $ _POST [„mesto“]. "
»;
ozvena "
»;
echo „Vaša správa:“. $ _POST ["Správa"];
?>

Tento súbor umiestnite do adresára so stránkou formulára. Teraz, keď použijete formulár, údaje budú postúpené obsluhe, ktorá zobrazí správu obsahujúcu údaje o užívateľovi.

$ _Požiadané pole

Použitie superglobálneho poľa$ _Žiadosť veľmi výhodné, najmä keď nie je známe, akým spôsobom boli údaje prenesené.

So slučkou foreach môžete iterovať hodnoty poľa $ _Request.

V tomto prípade zobrazíme všetky hodnoty v poli $ _Request. To je možné vykonať na kontrolu správnosti zadania používateľom. To znamená, že používateľ zadá údaje do formulára, klikne na odoslať, ale namiesto spracovania údajov sa na jeho obrazovke zobrazí správa s ním zadanými údajmi a nápisom potvrdí alebo odmietne. Táto myšlienka sa uplatnila na mnohých stránkach a skutočne v mnohých programoch.

V tomto návode sme sa naučili používať PHP na spracovanie formulárov. Ako vidíte, PHP je výkonný nástroj na spracovanie formulárov, ktorý vám umožňuje vykonávať najrôznejšie manipulácie s údajmi používateľa, ako napríklad ukladanie údajov o používateľoch do databázy na následné autorizovanie, odosielanie správ na poštu používateľa a mnoho ďalších.

V ďalšej lekcii sa naučíme, ako overiť vstup používateľa pred jeho priamym spracovaním.

Dobrý deň všetkým. Alexey Gulynin je v kontakte. V minulom článku ste sa dozvedeli o tom, čo je serializácia v php. V tomto článku by som chcel hovoriť o tom, ako pracovať formuláre v PHP... PHP je navrhnuté pre webové skriptovanie a spracovanie formulárov je v tomto procese možno najdôležitejšie. V dnešnej dobe neexistujú žiadne stránky, na ktorých by napríklad neexistovala registrácia alebo formulár pre spätnú väzbu alebo dotazník. Fóra, internetové obchody, pridanie komentára, odoslanie správy na sociálnu sieť - to všetko je spracovanie údajov umiestnených v poliach formulára. Na príklade zistíme, ako na to procesné formuláre v PHP.
Implementujeme jednoduchú úlohu: musíte vytvoriť 2 polia (meno a priezvisko), preniesť tieto údaje do skriptu action.php, v dôsledku čoho by mal prísť pozdrav „Vitajte, priezvisko, krstné meno“... Kto zabudol, ako sa vytvárajú formuláre a aké polia existujú, môžete vidieť. Vytvoríme súbor test.html:

Názov: Priezvisko:



Upozorňujeme, že súbor action.php (v našom prípade) musí byť umiestnený v rovnakom priečinku ako súbor test.html. Tu môžete zadať relatívne aj absolútne cesty. Buďte opatrní, mnoho chýb súvisí s nesprávnym zadaním cesty k skriptu obslužného programu formulárov.

Vytvorme súbor action.php s nasledujúcim obsahom:

Ak teraz otvoríme súbor test.html, vyplníme polia formulára a klikneme na tlačidlo, dostaneme sa do súboru action.php, kde sa zobrazí správa. V tomto prípade prehliadač odkazuje na skript action.php a odovzdá ho znakom „?“ všetky hodnoty atribútov názvu umiestnené vo vnútri značiek oddelené &. Všimnite si, čo nahrádza $ _SERVER.

Náš problém môžeme vyriešiť syntaktickou analýzou reťazca QUERY_STRING pomocou štandardných funkcií na prácu s reťazcami v PHP, ale je lepšie použiť iný mechanizmus - je to pomocou poľa $ _REQUEST. PHP umiestňuje všetky údaje prijaté z polí formulára do poľa $ _REQUEST bez ohľadu na to, ako boli údaje prenesené: POST alebo GET (zistíte to prostredníctvom $ _SERVER [„REQUEST_METHOD“]). Pripomeniem, ako sa tieto metódy líšia:

Metóda GET je verejná, metóda POST je súkromná, t.j. líšia sa v spôsobe odovzdávania parametrov. Príklad:

1) Ak použijeme metódu post: mysite.ru/request.php.
2) Ak použijeme metódu get: mysite.ru/request.php?myname=ansAlexans&surname=Gulynin ".

PHP okrem poľa $ _REQUEST vytvára aj polia $ _GET a $ _POST. Implementujme teraz svoju úlohu na základe získaných znalostí:

Ak teraz vyplníme formulár a klikneme na tlačidlo, uvidíme, že skript action.php nás víta podľa priezviska a mena. Všetko funguje správne.

Tu je všetko v poriadku, ale ak zmeníme názov skriptu, budeme musieť vykonať zmeny v súbore test.html. Upravme súbor action.php tak, aby sa po prístupe k nemu buď zobrazil formulár, keď sme nič neodoslali, alebo pozdrav po kliknutí na tlačidlo:

"> Meno: Priezvisko:


Teraz nie sme závislí od názvu skriptu, pretože nastavíme ho prostredníctvom premennej prostredia $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Je ekvivalentný .
Okrem premennej prostredia SCRIPT_NAME existuje mnoho ďalších.

JavaScript je vo vašom prehliadači zablokovaný. Aby stránka fungovala, povoľte JavaScript!

Práca s formulármi

Formuláre HTML sa používajú na prenos údajov od používateľa webovej stránky na server. V PHP existuje množstvo špeciálnych nástrojov na prácu s formulármi.

Preddefinované premenné

PHP má množstvo preddefinovaných premenných, ktoré sa nemenia, keď sú všetky aplikácie spustené v konkrétnom prostredí. Hovorí sa im aj premenné prostredia alebo premenné prostredia. Odrážajú nastavenia prostredia webového servera Apache a informácie o požiadavkách pre daný prehliadač. Je možné získať hodnoty adresy URL, reťazca dopytu a ďalších prvkov požiadavky HTTP.

Všetky preddefinované premenné sú obsiahnuté v asociatívnom poli $ GLOBALS. Toto pole obsahuje okrem premenných prostredia aj globálne premenné definované v programe.

Príklad 1

Zobrazenie poľa $ GLOBALS $ value) echo "\ $ GLOBALS [\" $ key \ "] == $ hodnota
"; ?>

V dôsledku toho sa na obrazovke zobrazí zoznam všetkých globálnych premenných vrátane premenných prostredia. Najbežnejšie používané sú tieto:

VariabilnéPopisObsah
$ _SERVER ["HTTP_USER_AGENT"]Meno a verzia klientaMozilla /5.0 (kompatibilný; Googlebot /2.1; + http: //www.google.com/bot.html)
$ _SERVER ["REMOTE_ADDR"]IP adresa5.9.142.17
getenv ("HTTP_X_FORWARDED_FOR")Interná IP adresa klienta
$ _SERVER ["REQUEST_METHOD"]Spôsob žiadosti (ZÍSKAŤ alebo POST)ZÍSKAJTE
$ _SERVER ["QUERY_STRING"]Na žiadosť GET kódované údaje prešli spolu s adresou URL
$ _SERVER ["REQUEST_URL"]Úplná adresa klienta vrátane reťazca dopytu
$ _SERVER ["HTTP_REFERER"]Adresa stránky, z ktorej bola žiadosť odoslaná
$ _SERVER ["PHP_SELF"]Cesta k spustiteľnému programu/index.php
$ _SERVER ["SERVER_NAME"]Doménastránky
$ _SERVER ["REQUEST_URI"]Way/php/php_form.php

Spracovanie vstupu užívateľa

Program na spracovanie vstupu PHP je možné oddeliť od textu HTML obsahujúceho vstupné formuláre alebo ho možno umiestniť na jednu stránku.

Príklad 2

Príklad spracovania vstupov

"method =" post ">

Číslo karty:



Tu nie je žiadne tlačidlo prenosu údajov. po stlačení klávesu sa automaticky odošle jeden formulár poľa .

Pri spracovaní položky s výberom s viacerými hodnotami musíte k názvu položky pridať dvojicu hranatých zátvoriek, aby ste získali prístup k všetkým vybratým hodnotám. Ak chcete vybrať viac položiek, podržte kláves Ctrl.

Príklad 3.1

Zoznam



VÝSLEDOK PRÍKLADU 3.1:

Príklad 3.2

Spracovanie zoznamu zo súboru ex1.htm

    "; ozvena foreach ($ Item ako $ value)"
  • $ hodnota "; ozvena"
"; ?>

Príklad 4. Prijímanie hodnôt zo začiarkavacích políčok

$ v) (ak ($ ​​v) echo „Poznáte programovací jazyk $ k!
"; else echo" Nepoznáte programovací jazyk $ k.
"; } } ?>
"method =" post "> Aké programovacie jazyky poznáte?
PHP
Perl

VÝSLEDOK PRÍKLADU 4:

Príklad 5

"; ?>
"method =" post ">

Formuláre je možné spracovávať bez obáv o skutočné názvy polí.

Na to môžete použiť (v závislosti od spôsobu prenosu) asociatívne pole $ HTTP_GET_VARS alebo $ HTTP_POST_VARS. Tieto polia obsahujú páry názov / hodnota pre každý prvok odoslaného formulára. Ak vám to nie je ľahostajné, môžete použiť asociatívne pole $ _REQUEST.

Príklad 6

Manipulácia s ľubovoľným vstupom bez ohľadu na spôsob prenosu $ value) echo "$ key == $ value
"; ?>

Príklad 7. Ovládanie kliknutia na tlačidlo pomocou operátora „@“.

">

Pomocou funkcie header () odoslaním hlavičky „Poloha“ do prehliadača môžete používateľa presmerovať na novú stránku.

Napríklad:

Prenos súboru na server. Nahrajte súbor. UpLoad

PHP vám umožňuje prenášať súbory na server. Formulár HTML na odoslanie súboru musí obsahovať argument enctype = "multipart / form-data".

Okrem toho musí byť pred poľom na kopírovanie súboru vo formulári skryté pole s názvom max_file_size. Toto skryté pole by malo obsahovať maximálnu veľkosť prenášaného súboru (spravidla nie viac ako 2 MB).

Samotné pole pre prenos súborov je bežný prvok INPUT s argumentom type = "súbor".

Napríklad:

"method =" post ">

Po nahraní na server bude súbor jedinečne pomenovaný a uložený v dočasnom adresári. Úplná cesta k súboru je zapísaná do globálnej premennej, ktorej názov je rovnaký ako názov poľa na prenos tohto súboru. PHP navyše ukladá niekoľko ďalších informácií o prenesenom súbore do iných globálnych premenných:

Príklad 8

Spracovanie preneseného súboru "; echo" name: ". $ _ FILES [" userfile "] [" name "]."
"; echo" size: ". $ _ FILES [" userfile "] [" size "]."
"; echo" typ: ". $ _ FILES [" užívateľský súbor "] [" typ "]."
"; } ?>
"method =" post ">



Príklady odosielania súborov na server

Ak máte problémy so serverom pri prekódovaní nahraného súboru, symbolu s kódom 0x00 nahradené medzerou (znak s kódom 0x20), pridajte do súboru httpd.conf z adresára Apache ( / usr / local / apache) nasledujúce riadky.

CharsetRecodeMultipartForms vypnuté



Páčil sa vám článok? Zdieľaj to