Skjema php. Måter for kommunikasjon mellom nettleseren og serveren. Hvilken metode bør brukes

Ønsker dere alle en god dag. Alexey Gulynin er i kontakt. I den siste artikkelen lærte du om hva serialisering er i php. I denne artikkelen vil jeg gjerne snakke om hvordan man jobber med skjemaer i PHP. PHP språk er designet for nettskripting, og skjemabehandling er kanskje det viktigste i denne prosessen. I dag er det ingen sider som ikke har for eksempel registrering eller skjema tilbakemelding, eller et spørreskjema. Forum, nettbutikker, legge til en kommentar, sende en melding til sosialt nettverk- alt dette er behandlingen av data plassert i skjemafeltene. La oss bruke et eksempel for å finne ut hvordan prosessskjemaer i PHP.
Vi vil gjennomføre enkel oppgave: du må opprette 2 felt (for- og etternavn), overføre disse dataene til action.php-skriptet, som et resultat bør en hilsen komme ut "Velkommen, etternavn fornavn"... Hvem som har glemt hvordan skjemaer lages, og hvilke felter det er, kan du se. La oss lage en test.html-fil:

Navn: Etternavn:


Vær oppmerksom på at action.php-filen (i vårt tilfelle) må ligge i samme mappe som test.html-filen. Her kan du spesifisere både relativ og absolutte veier... Vær forsiktig, mange feil er forbundet med feil spesifikasjon av banen til skjemabehandlerskriptet.

La oss lage en action.php-fil med følgende innhold:

Hvis vi nå åpner test.html-filen, fyller ut skjemafeltene og klikker på knappen, kommer vi til action.php-filen, hvor en melding vil vises. V denne saken nettleseren refererer til action.php-skriptet og sender det gjennom "?" alle betydninger navneattributter plassert inne i tagger atskilt med &. Legg merke til hva som erstattes med $ _SERVER.

Vi kan løse problemet vårt ved å analysere QUERY_STRING-strengen ved å bruke standard funksjoner på å jobbe med strenger i PHP, men det er bedre å bruke en annen mekanisme - dette er å bruke $ _REQUEST-matrisen. PHP plasserer alle data mottatt fra skjemafelt i $ _REQUEST-matrisen, uavhengig av hvordan dataene ble overført: POST eller GET (du kan finne ut av $ _SERVER ["REQUEST_METHOD"). La meg minne deg på hvordan disse metodene er forskjellige:

GET-metoden er offentlig, POST-metoden er privat, dvs. de er forskjellige i måten de sendes parametere på. Eksempel:

1) Hvis vi bruker post metode: mysite.ru/request.php.
2) Hvis vi bruker få metode: mysite.ru/request.php?myname=SaAlexa&surname=SaGulynin ".

I tillegg til $ _REQUEST-matrisen, lager PHP også $ _GET- og $ _POST-matrisene. La oss nå implementere oppgaven vår, basert på kunnskapen vi har fått:

Hvis vi nå fyller ut skjemaet og klikker på knappen, vil vi se at action.php-skriptet hilser oss med etternavn og fornavn. Alt fungerer som det skal.

Alt er bra her, men hvis vi endrer navnet på skriptet, må vi gjøre endringer i test.html-filen. La oss endre action.php-filen slik at ved å åpne den, enten vises et skjema når vi ikke har sendt inn noe, eller en hilsen når vi klikket på knappen:

"> Navn: Etternavn:


Nå er vi ikke avhengig av navnet på manuset, fordi vi setter den gjennom miljøvariabelen $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Tilsvarer .
I tillegg til miljøvariabelen SCRIPT_NAME er det mange andre.

Ofte på nettsider kan du finne sider med HTML - skjemaer som ligger på dem. Nettskjemaer er en praktisk måte å få informasjon fra besøkende på nettstedet ditt. Et eksempel på dette er - som gir tilbakemelding til besøkende og nettstedsutviklere. Skjemaer er også praktiske for nettstedsutviklere når de utvikler et CMS, som gjør det mulig å opprettholde hovedegenskapen til nettstedet - relevans. Denne artikkelen fokuserer på det grunnleggende om å lage HTML-skjemaer, deres behandling og metoder for å overføre data fra skjermskjemaer til PHP-skript.

1) Lage et enkelt skjema

Tagger:

og
angi begynnelsen og slutten av skjemaet. Form start tag
inneholder to attributter: handling og metode... Action-attributtet inneholder URL-en til skriptet som må kalles for å behandle skriptet. Egenskap metode forteller nettleseren hva slags HTTP-forespørsel som skal brukes for å sende inn skjemaet; mulige verdier POST og .

Kommentar

Hovedforskjellen mellom POST- og GET-metodene er måten informasjon overføres på. I GET-metoden sendes parametere gjennom adresselinjen, dvs. Faktisk, i HTTP-forespørselsoverskriften, mens i POST-metoden, sendes parameterne gjennom kroppen til HTTP-forespørselen og reflekteres ikke på noen måte i form av adresselinjen.

$ text = nl2br ($ _POST ["min tekst"]);
?>

Oppgave: La oss si at du vil lage en rullegardinliste med år 2000 til 2050.
Løsning: Det er nødvendig å lage et HTML-skjema med et SELECT-element og et PHP-skript for å behandle skjemaet.

Diskusjon:

Først, la oss lage to filer: form.html og action.php... I fil form.html vil inneholde et html-skjema med en nedtrekksliste. Dessuten kan verdiene i listen spesifiseres på to måter:

I. Legge inn data manuelt:

II. Legge inn data gjennom en loop:

Som du kan se, er det andre eksemplet med en løkke mer kompakt. Jeg tror det ikke er nødvendig å ta med manuset til behandleren av dette skjemaet, fordi det behandles på samme måte som et tekstfelt, dvs. listeverdier kan hentes fra superglobal array $ _POST.

Beskrivelse:

La oss lage et HTML-skjema for å sende en fil til serveren.




Dette html-skjemaet inneholder et element bla, som åpner en dialogboks for å velge en fil som skal lastes opp til serveren. Ved å trykke på knappen "Overfør fil", sendes filen til behandlerskriptet.

Deretter må du skrive en skriptbehandler action.php... Før du skriver behandleren, må du bestemme i hvilken katalog vi skal kopiere filen:

if (isset ($ _ FILES ["minfil"))) // Hvis filen eksisterer
{
$ catalog = "../image/"; // Vår katalog
if (is_dir ($ katalog)) // Hvis det finnes en slik katalog
{
$ minfil = $ _FILES ["min fil"] ["tmp_navn"]; // Midlertidig fil
$ myfile_name = $ _FILES ["min fil"] ["navn"]; // Filnavn
if (! kopi ($ minfil, $ katalog)) ekko "Feil under kopiering av fil"... $ mittfilnavn // Hvis ikke kunne kopiere filen
}
else mkdir ("../image/"); // Hvis det ikke finnes en slik katalog, vil vi opprette den
}
?>

Kommentar

Hvis du stoler på at brukere laster opp filer til serveren din, må du være ekstremt forsiktig. Angripere kan injisere "dårlig" kode i et bilde eller en fil og sende den til serveren. I slike tilfeller må du kontrollere nedlastingen av filer nøye.

Dette eksemplet viser hvordan du oppretter en katalog og kopierer en fil til den katalogen på serveren.

Jeg vil også vise et eksempel med elementet avmerkingsboksen... Dette elementet er litt forskjellig fra andre elementer ved at hvis ikke et av elementene avmerkingsboksen'A er ikke valgt, da er det superglobale $ _POST vil returnere tom:


Blå
Svart
Hvit

if (! tomme ($ _ POST ["minfarge"))) echo $ _POST ["minfarge"]; // Hvis minst 1 element er valgt
annet ekko "Velg en verdi";
?>

PHP-skjema – Arbeid med skjemaer i PHP er den åttende leksjonen i PHP-opplæringen. I denne opplæringen vil vi snakke om behandling av skjemaer ved hjelp av PHP.

Arbeid med skjemaer

PHP lar deg behandle data som brukeren har skrevet inn i skjemafelt. Etter å ha aktivert send-knappen, sendes dataene til siden - behandleren spesifisert i handlingsfeltet til elementet

... På siden - behandleren er et PHP-skript som utfører visse operasjoner på de mottatte dataene, for eksempel genererer og sender et brev i henhold til detaljene spesifisert av brukeren.

Sender data til behandleren.

Dataene fra skjemaet sendes til serveren som en sekvens av navn/verdi-par. Dette betyr at navnet på hvert skjemaelement (som vises i NAME-attributtet til taggen) er assosiert med verdien til det elementet (angitt eller valgt av brukeren). Navn/verdiformatet som brukes for overføring er navn = verdi.

Alle data som sendes fra skjemaet til behandlerprogrammet er plassert i følgende superglobale arrays: $ _ GET, $ _POST og $ _REQUEST.

$ _GET - Inneholder alle verdier som er bestått av GET-metoden.

$ _POST - Inneholder alle verdier som er bestått av POST-metoden.

$ _REQUEST - Inneholder alle verdier som er bestått av POST- og GET-metodene.

Etternavn:

By:

Beskjed:

Etter å ha trykket på knappen sende inn av dette skjemaet sendes alle data til behandleren process.php ... Siden dette skjemaet bruker metoden POST , så vil alle variabler være plassert inne i matrisen$ _POST.

La oss nå lage en behandler:

echo "Navn: ". $ _POST ["FName"]. "
»;
echo "Etternavn: ". $ _POST ["LName"]. "
»;
echo "By: ". $ _POST ["By"]. "
»;
ekko "
»;
ekko "Din melding:". $ _POST ["Melding"];
?>

Plasser denne filen i katalogen med skjemasiden. Nå, når du bruker skjemaet, vil dataene bli sendt til behandleren, som vil vise en melding som inneholder brukerdataene.

$ _Request array

Ved hjelp av en superglobal matrise$ _Request veldig praktisk, spesielt når det ikke er kjent med hvilken metode dataene ble overført.

Med foreach-løkken kan du iterere over verdiene til $ _Request-matrisen.

I dette eksemplet viser vi alle verdiene i $ _Request-matrisen. Dette kan gjøres for å kontrollere riktigheten av brukerinndata. Det vil si at brukeren legger inn data i skjemaet, klikker på send, men i stedet for å behandle dataene, vises en melding på skjermen hans med dataene han har lagt inn og inskripsjonen bekrefte eller avslå. Denne ideen har blitt brukt på mange nettsteder, og faktisk i mange programmer.

I denne opplæringen lærte vi hvordan du bruker PHP til å behandle skjemaer. Som du kan se, er PHP et kraftig skjemabehandlingsverktøy, som lar deg utføre en lang rekke manipulasjoner med brukerdata, for eksempel å lagre brukerdata i en database for påfølgende godkjenning, sende en melding til brukerens e-post og mye mer.

I neste leksjon vil vi lære hvordan du validerer brukerinndata før vi behandler det direkte.

HTML-skjemaer er komplekse grensesnittelementer. De inkluderer forskjellige funksjonelle elementer: inndatafelt og