Contacte

Trimiterea formularului trimis date către php. Crearea formularelor HTML. II. Introducerea datelor printr-o buclă

Pentru a organiza transferul de date către server folosind un formular, va trebui să implementați un formular HTML în care vizitatorii site-ului să introducă informațiile și codul PHP, al căror scop este să primească și să proceseze datele primite pe server.

Formular HTML pentru trimiterea datelor

Formularul de pe pagină este format din etichete

...
, în interiorul cărora sunt plasate etichete pentru câmpuri pentru introducerea informațiilor de text, etichete pentru componente speciale (de exemplu, o casetă combinată), etichete pentru un câmp de selecție și încărcare de fișiere.

* Pentru HTML5, este de asemenea posibil să plasați etichete de câmp de formular nu în etichetele de formular, ci oriunde pe pagină. Mai mult, pentru fiecare astfel de câmp, trebuie să specificați atributul „formular” pentru a determina cu ce formă de trimitere ar trebui să interacționeze.

Deci, cel mai simplu formular de trimitere poate conține următorul cod:


Valoarea A:
Valoarea B:

Elementele de formă și parametrii acestora:

action = "myform.php"- atributul „acțiune” definește ce fișier php va procesa datele trimise. În acest exemplu, datele vor fi trimise către fișierul „myform.php” situat în același director cu pagina cu formularul. Dacă acest atribut nu este specificat în mod explicit, datele formularului vor fi trimise la adresa paginii formularului în sine.

method = "postare"- parametrul metodei definește metoda de transmitere a datelor POST sau GET. Mai multe detalii despre acest lucru în articolul „Diferențele dintre metodele POST și GET”. Dacă nu specificați în mod explicit atributul, metoda GET va fi utilizată în mod implicit.

Text "Înțelesul A:"și „Valoarea B:” adăugat doar în scopul proiectării și clarității formularului pentru utilizator. Nu este necesar să adăugați acest lucru pentru transferul de date, dar pentru ca utilizatorul să înțeleagă ce să introducă, merită specificat.

Etichete: sunt folosite pentru a forma diferite controale de formă.

type = "text"- atributul „tip” definește tipul câmpului. În funcție de tipul specificat, atât aspectul elementului, cât și scopul său se schimbă. Valoarea atributului „text” indică faptul că browserul va reda elementul ca un câmp de text cu o singură linie în care utilizatorul poate introduce șirul.

nume = "date1"- atributul „nume”, indică numele sau, mai degrabă, indexul datelor din matricea primită de server. Acesta este un parametru obligatoriu prin care valoarea trecută poate fi apoi accesată în handlerul PHP. Numele poate fi ales în mod arbitrar, cu toate acestea, este mai convenabil atunci când această valoare are o semnificație ușor de înțeles.

type = "trimiteți"- etichetă cu această valoare a parametrului „tip” va fi afișat pe pagină ca buton. De fapt, puteți face fără un buton pe un formular. Dacă, de exemplu, formularul are câmpuri de text, atunci trimiterea se poate face prin simpla apăsare pe tasta „Enter”. Dar prezența butonului face ca formularul să fie mai ușor de înțeles.

value = "(! LANG: Trimite" !}- în acest caz (pentru tip = "trimiteți") definește doar legenda de pe buton. Pentru type = "text", de exemplu, acesta va fi textul care va fi afișat în câmpul de text.

Ca rezultat, pe pagină, acest cod va arăta cam așa:

Făcând clic pe buton, datele vor fi trimise la pagina specificată, iar dacă există și funcționează corect, datele vor fi procesate.

Procesarea datelor trimise în formular HTML în PHP

Datele trimise în acest mod sunt plasate în matricele superglobale $ _POST, $ _GET și $ _REQUEST. $ _POST sau $ _GET vor conține date în funcție de metoda utilizată pentru a trimite. $ _REQUEST conține datele trimise prin oricare dintre metodele specificate.

$ _POST, $ _GET și $ _REQUEST sunt tablouri asociative ale căror câmpuri de index se potrivesc cu atributele „nume” ale etichetelor ... În consecință, pentru a lucra cu date în fișierul myform.php, puteți atribui variabilelor valorile elementelor unei astfel de matrice specificând numele câmpului ca index:

// pentru metoda GET
$ a = $ _GET [ „date1”];
$ b = $ _GET [ „date2”];

// pentru metoda POST
$ a = $ _POST [ „date1”];
$ b = $ _POST [ „date2”];

// pentru orice metodă
$ a = $ _REQUEST [ „date1”];
$ b = $ _REQUEST [ „date2”];

Verificarea completării câmpurilor formularului

Uneori, atunci când primiți date, trebuie să verificați dacă utilizatorul a trimis un formular gol. Puteți utiliza funcția goală pentru aceasta.

if (gol ($ _REQUEST ["data1"]))) (
ecou „Câmpul nu este completat”;
} altceva (
ecou „Câmpul a fost completat”;
$ a = $ _REQUEST [ „date1”];
}

De obicei, această soluție este suficientă. Dacă trebuie să introduceți text, va fi clar dacă este introdus sau nu. Cu toate acestea, dacă utilizatorul introduce în mod deliberat zero pentru calcule, atunci funcția goală va arăta că nu există nicio valoare. Prin urmare, este mai bine să utilizați funcția isset pentru astfel de situații. Se va verifica în mod explicit dacă valoarea este dată sau nu.

if (isset ($ _REQUEST ["data1"]))) (
ecou „Câmpul a fost completat”;
$ a = $ _REQUEST [ „date1”];
} altceva (
ecou „Câmpul nu este completat”;
}

sau cum să trimiteți un mesaj de e-mail folosind un formular HTML

Ai propriul tău site web și vrei să primești scrisori sau mesaje de la utilizatori, întrebări, sfaturi sau doar urări prin e-mail, atunci această lecție este pentru tine!

Cum să trimiteți un mesaj prin e-mail

Avem nevoie de următoarele fișiere:

  1. form.html - o pagină cu un formular.
  2. form_processing.php - fișier script, procesarea formularului HTML.

Luați în considerare codul form.html:

Prelucrarea formularelor HTML cu PHP



Numele dumneavoastră:


E-mail:


Temă:


Mesaj:







Formular HTML conține câmpuri pentru introducerea numelui, a adresei poștale a utilizatorului, a subiectului mesajului, a textului mesajului și a butonului „Trimiteți”, când faceți clic pe care, informațiile sunt trimise spre procesare către PHP script în fișierul form_processing.php.

Metoda de transport hipertext are două semnificații: get (implicit) și post. Metoda de postare este folosită mai des, deoarece vă permite să transferați cantități mari de date. Toate valorile transmise scriptului de procesare prin metoda post sunt stocate în matricea asociativă $ _POST (această matrice este inițial încorporată în interpretul php), care constă din variabile $ _POST, unde numele este numele real al câmpului de intrare - valoarea atributului name = "":

Să creăm un fișier handler form_processing.php:

/ * Verificăm datele de intrare și le protejăm de ostile
scripturi * /
$ your_name = htmlspecialchars ($ _POST ["your_name"]);
$ email = htmlspecialchars ($ _POST ["email"]);
$ tema = htmlspecialchars ($ _POST ["tema"]);
$ message = htmlspecialchars ($ _POST ["mesaje"]);
/ * Setați e-mailul destinatarului * /
$ myemail = " [e-mail protejat]" ;
/ * Verificați dacă câmpurile de intrare obligatorii sunt completate folosind check_input
funcție * /
$ your_name = check_input ($ _POST ["your_name"], "Introdu numele tau!");
$ tema = check_input ($ _POST ["tema"], "Vă rugăm să introduceți un subiect pentru mesajul dvs.!");
$ email = check_input ($ _POST ["email"], "Introduceți adresa dvs. de email!");
$ message = check_input ($ _POST ["mesaj"], "Ai uitat să scrii un mesaj!");
/ * Verificați dacă e-mailul este scris corect * /
if (! preg_match ( "/ ((\ w \ -> + \ @ [\ w \ -> + \. [\ w \ - \ +) /", $ e-mail))
{
show_error ( "
Adresa de e-mail nu există "
);
}
/ * Creați o nouă variabilă atribuindu-i o valoare * /
$ message_to_myemail = "Buna ziua!
Formularul dvs. de contact a primit un mesaj!
Numele expeditorului: $ your_name
E-mail: $ e-mail
Textul mesajului: $ mesaj
Sfârșit"
;
/ * Trimiteți un mesaj folosind funcția mail () * /
$ din = „De la: $ yourname<$email>\ r \ n Răspuns la: $ e-mail \ r \ n ";
mail ($ myemail, $ tema, $ message_to_myemail, $ from);
?>

Mesajul tau a fost trimis cu succes!


Acasă >>>


/ * Dacă s-au făcut erori la completarea formularului, acesta va funcționa
următorul cod: * /
funcție check_input ($ date, $ problem = "")
{
$ date = trim ($ data);
$ date = stripslashes ($ data);
$ data = htmlspecialchars ($ data);
if ($ problem && strlen ($ data) == 0)
{
show_error ($ problemă);
}
returnează $ date;
}
funcție show_error ($ myError)
{
?>


Vă rugăm să corectați următoarea eroare:







Ieșire ();
}
?>

Secțiunea codului:

- va afișa textul specificat dacă câmpurile Formulare HTML au fost completate corect. index.php este pagina principală a site-ului dvs.

Secțiunea codului:

- va indica natura erorii.

Valoare variabilă:

$ din = „De la: $ yourname<$email>\ r \ n Răspuns la: $ e-mail \ r \ n ";
?>

- va afișa automat e-mailul utilizatorului în linia corectă atunci când scrieți un răspuns.

Formular PHP - Lucrul cu Formulare în PHP este a opta lecție a tutorialului PHP. În acest tutorial, vom vorbi despre procesarea formularelor folosind PHP.

Lucrul cu formularele

PHP vă permite să procesați datele pe care utilizatorul le-a introdus în câmpurile de formular. După activarea butonului de trimitere, datele sunt trimise către pagină - gestionarul specificat în câmpul de acțiune al elementului

... Pe pagină - handlerul este un script PHP care efectuează anumite operațiuni asupra datelor primite, de exemplu, generează și trimite o scrisoare în conformitate cu detaliile specificate de utilizator.

Transmiterea datelor către handler.

Datele din formular sunt trimise la server ca o succesiune de perechi nume / valoare. Aceasta înseamnă că numele fiecărui element de formular (care apare în atributul NAME al etichetei) este asociat cu valoarea acelui element (introdus sau selectat de utilizator). Formatul de nume / valoare utilizat pentru transmisie este nume = valoare.

Toate datele transmise de la formular la programul de gestionare se află în următoarele tablouri superglobale: $ _ GET, $ _POST și $ _REQUEST.

$ _GET - Conține toate valorile transmise de metoda GET.

$ _POST - Conține toate valorile transmise de metoda POST.

$ _REQUEST - Conține toate valorile transmise de metodele POST și GET.

Nume de familie:

Oraș:

Mesaj:

După apăsarea butonului Trimite din acest formular, toate datele sunt transmise către handler proces.php ... Deoarece acest formular folosește metoda POST , atunci toate variabilele vor fi localizate în interiorul matricei$ _POST.

Acum să creăm un handler:

ecou "Nume: ". $ _POST ["FName"]. "
»;
ecou "Numele de familie: ". $ _POST ["LName"]. "
»;
ecou "Oraș: ". $ _POST ["Oraș"]. "
»;
ecou "
»;
ecou „Mesajul tău:”. $ _POST ["Mesaj"];
?>

Plasați acest fișier în directorul cu pagina formularului. Acum, când utilizați formularul, datele vor fi transmise către handler, care va afișa un mesaj care conține datele utilizatorului.

$ _Cerere matrice

Folosind o matrice superglobală$ _Cerere foarte convenabil, mai ales când nu se știe prin ce metodă au fost transferate datele.

Bucla foreach vă permite să iterați peste valorile matricei $ _Request.

În acest exemplu, afișăm toate valorile din matricea $ _Request. Acest lucru se poate face pentru a verifica corectitudinea introducerii utilizatorului. Adică, utilizatorul introduce date în formular, face clic pe trimitere, dar în loc să proceseze datele, pe ecranul său este afișat un mesaj cu datele introduse de el și inscripția confirmă sau refuză. Această idee a fost aplicată pe multe site-uri, și într-adevăr în multe programe.

În acest tutorial, am învățat cum să folosim PHP pentru a procesa formulare. După cum puteți vedea, PHP este un instrument puternic de procesare a formularelor, care vă permite să efectuați o mare varietate de manipulări cu datele utilizatorului, cum ar fi stocarea datelor utilizatorului într-o bază de date pentru autorizarea ulterioară, trimiterea unui mesaj la e-mailul utilizatorului și multe altele.

În lecția următoare, vom învăța cum să validăm datele introduse de utilizator înainte de a le prelucra direct.

Ziua bună tuturor. Alexey Gulynin este în contact. În ultimul articol, ați aflat despre ce este serializarea în php. În acest articol, aș dori să vorbesc despre cum să lucrați cu formulare în PHP... PHP este conceput pentru scriptarea web, iar procesarea formularelor este probabil cea mai importantă în acest proces. În zilele noastre, nu există site-uri pe care, de exemplu, nu ar exista înregistrare sau formular de feedback sau chestionar. Forumuri, cumpărături online, adăugarea unui comentariu, trimiterea unui mesaj pe o rețea socială - toate acestea sunt prelucrarea datelor plasate în câmpurile formularului. Să folosim un exemplu pentru a afla cum procesează formulare în PHP.
Vom implementa o sarcină simplă: trebuie să creați 2 câmpuri (prenume și prenume), să transferați aceste date în scriptul action.php, ca urmare, ar trebui să iasă o felicitare „Bun venit, prenume prenume”... Cine a uitat cum sunt create formularele și ce câmpuri există, puteți vedea. Să creăm un fișier test.html:

Nume: Nume de familie:



Vă rugăm să rețineți că fișierul action.php (în cazul nostru) trebuie să fie localizat în același folder cu fișierul test.html. Aici puteți specifica căile relative și absolute. Aveți grijă, multe erori sunt asociate cu specificarea incorectă a căii către scriptul de gestionare a formularului.

Să creăm un fișier action.php cu următorul conținut:

Dacă deschidem acum fișierul test.html, completăm câmpurile formularului și facem clic pe buton, vom ajunge la fișierul action.php, unde va fi afișat un mesaj. În acest caz, browserul se referă la scriptul action.php și îl trece prin „?” toate valorile atributelor de nume situate în interiorul etichetelor separat de &. Rețineți ce se înlocuiește cu $ _SERVER.

Ne putem rezolva problema analizând șirul QUERY_STRING folosind funcții standard pentru lucrul cu șiruri în PHP, dar este mai bine să folosiți un alt mecanism - acesta este folosind matricea $ _REQUEST. PHP plasează toate datele primite din câmpurile formularului în matricea $ _REQUEST, indiferent de modul în care au fost transferate datele: POST sau GET (puteți afla prin $ _SERVER ["REQUEST_METHOD"]). Permiteți-mi să vă reamintesc cum diferă aceste metode:

Metoda GET este publică, metoda POST este privată, adică acestea diferă prin modul în care sunt trecuți parametrii. Exemplu:

1) Dacă folosim metoda post: mysite.ru/request.php.
2) Dacă folosim metoda get: mysite.ru/request.php?myname=ansAlexans&surname=Gulynin ".

De asemenea, pe lângă matricea $ _REQUEST, PHP creează matricele $ _GET și $ _POST. Să implementăm acum sarcina noastră, pe baza cunoștințelor dobândite:

Dacă acum completăm formularul și facem clic pe buton, vom vedea că scriptul action.php ne întâmpină după nume și prenume. Totul funcționează corect.

Totul este în regulă aici, dar dacă schimbăm numele scriptului, atunci va trebui să facem modificări în fișierul test.html. Să modificăm fișierul action.php astfel încât, accesându-l, fie să fie afișat un formular atunci când nu am trimis nimic, fie o felicitare când am făcut clic pe buton:

"> Nume: Nume de familie:


Acum nu depindem de numele scriptului, deoarece l-am setat prin variabila de mediu $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Este echivalent cu .
În plus față de variabila de mediu SCRIPT_NAME, există multe altele.

JavaScript este blocat în browserul dvs. Vă rugăm să activați JavaScript pentru ca site-ul să funcționeze!

Lucrul cu formularele

Formularele HTML sunt utilizate pentru a transfera date de la utilizatorul paginii Web la server. Există o serie de instrumente speciale pentru lucrul cu formulare în PHP.

Variabile predefinite

PHP are o serie de variabile predefinite care nu se schimbă atunci când toate aplicațiile rulează într-un anumit mediu. Ele sunt, de asemenea, numite variabile de mediu sau variabile de mediu. Acestea reflectă setările mediului serverului Apache Web, precum și informațiile de solicitare pentru browserul dat. Este posibil să obțineți valorile adresei URL, șirul de interogare și alte elemente ale cererii HTTP.

Toate variabilele predefinite sunt conținute în matricea asociativă $ GLOBALS. În plus față de variabilele de mediu, această matrice conține și variabile globale definite în program.

Exemplul 1

Vizualizarea $ GLOBALS Array $ valoare) ecou "\ $ GLOBALS [\" $ cheie \ "] == valoare $
"; ?>

Ca rezultat, o listă cu toate variabilele globale, inclusiv variabilele de mediu, va apărea pe ecran. Cele mai frecvent utilizate sunt:

VariabilDescriereConţinut
$ _SERVER ["HTTP_USER_AGENT"]Numele și versiunea clientuluiMozilla / 5.0 (compatibil; Googlebot / 2.1; + http: //www.google.com/bot.html)
$ _SERVER ["REMOTE_ADDR"]adresa IP5.9.142.17
getenv ("HTTP_X_FORWARDED_FOR")Adresa IP internă a clientului
$ _SERVER ["REQUEST_METHOD"]Metoda de solicitare (GET sau POST)OBȚINE
$ _SERVER ["QUERY_STRING"]La o solicitare GET, datele codificate au fost transmise împreună cu adresa URL
$ _SERVER ["REQUEST_URL"]Adresa completă a clientului, inclusiv șirul de interogare
$ _SERVER ["HTTP_REFERER"]Adresa paginii de pe care a fost făcută solicitarea
$ _SERVER ["PHP_SELF"]Calea către programul care rulează/index.php
$ _SERVER ["SERVER_NAME"]Domeniusite
$ _SERVER ["REQUEST_URI"]Cale/php/php_form.php

Gestionarea datelor introduse de utilizator

Programul de procesare a intrărilor PHP poate fi separat de textul HTML care conține formularele de intrare sau poate fi plasat pe o singură pagină.

Exemplul 2

Exemplu de manipulare a intrărilor

"method =" post ">

Numărul de card:



Aici nu există niciun buton de transfer de date. un formular de câmp unic este trimis automat la apăsarea unei taste .

Când procesați un articol cu ​​o selecție cu mai multe valori, trebuie să adăugați o pereche de paranteze pătrate la numele articolului pentru a accesa toate valorile selectate. Pentru a selecta mai multe elemente, țineți apăsată tasta Ctrl.

Exemplul 3.1

Listă



REZULTATUL EXEMPLULUI 3.1:

Exemplul 3.2

Procesarea listei din fișierul ex1.htm

    "; foreach ($ Item ca valoare $) ecou"
  • $ valoare "; ecou"
"; ?>

Exemplul 4. Primirea valorilor din casetele de selectare

$ v) (if ($ v) echo "Cunoașteți limbajul de programare $ k!
"; else echo" Nu cunoașteți limbajul de programare $ k.
"; } } ?>
"method =" post "> Ce limbaje de programare cunoașteți?
PHP
Perl

REZULTATUL EXEMPLULUI 4:

Exemplul 5

"; ?>
"method =" post ">

Este posibil să procesați formulare fără să vă faceți griji cu privire la numele câmpurilor reale.

Pentru a face acest lucru, puteți utiliza (în funcție de metoda de transfer) matricea asociativă $ HTTP_GET_VARS sau $ HTTP_POST_VARS. Aceste tablouri conțin perechi nume / valoare pentru fiecare element al formularului trimis. Dacă nu vă pasă, puteți utiliza matricea asociativă $ _REQUEST.

Exemplul 6

Gestionarea intrărilor arbitrare indiferent de metoda de transfer $ valoare) ecou "$ cheie == $ valoare
"; ?>

Exemplul 7. Gestionarea unui clic pe un buton folosind operatorul "@".

">

Folosind funcția header (), prin trimiterea antetului „Location” către browser, puteți redirecționa utilizatorul către o pagină nouă.

De exemplu:

Transfer de fișiere pe server. Incarca fisier. UpLoad

PHP vă permite să transferați fișiere pe server. Formularul HTML pentru trimiterea fișierului trebuie să conțină argumentul enctype = "multipart / formular-date".

În plus, trebuie să existe un câmp ascuns numit max_file_size în fața câmpului de copiere a fișierului din formular. Acest câmp ascuns ar trebui să conțină dimensiunea maximă a fișierului transferat (de obicei nu mai mult de 2 MB).

Câmpul de transfer de fișiere în sine este un element INPUT obișnuit cu argumentul type = "fișier".

De exemplu:

"method =" post ">

După ce fișierul este încărcat pe server, i se atribuie un nume unic și este stocat în director pentru fișierele temporare. Calea completă către fișier este scrisă într-o variabilă globală, al cărei nume este același cu numele câmpului pentru transferul acestui fișier. În plus, PHP stochează câteva informații suplimentare despre fișierul transferat în alte variabile globale:

Exemplul 8

Procesarea fișierului transferat "; echo" nume: ". $ _ FILES [" userfile "] [" name "]."
"; echo" size: ". $ _ FILES [" userfile "] [" size "]."
"; echo" type: ". $ _ FILES [" userfile "] [" type "]."
"; } ?>
"method =" post ">



Exemple de încărcare de fișiere pe server

Dacă aveți probleme cu serverul transcodând fișierul încărcat, simbolul cu codul 0x00înlocuit cu un spațiu (caracter cu cod 0x20), adăugați la fișier httpd.conf din directorul Apache (/ usr / local / apache) următoarele linii.

CharsetRecodeMultipartForms Off



Ti-a placut articolul? Împărtășește-l