Formulier php. Manieren van communicatie tussen de browser en de server. Welke methode moet worden gebruikt?

Goededag aan iedereen. Alexey Gulynin heeft contact. In het laatste artikel heb je geleerd wat serialisatie is in php. In dit artikel wil ik het hebben over het werken met formulieren in PHP. PHP-taal is ontworpen voor webscripting en formulierverwerking is misschien wel het belangrijkste in dit proces. Tegenwoordig kom je geen sites meer tegen waar bijvoorbeeld geen registratie of een formulier zou zijn feedback, of een vragenlijst. Forums, online winkels, een opmerking toevoegen, een bericht sturen naar sociaal netwerk- dit alles is de verwerking van gegevens die in de formuliervelden zijn geplaatst. Laten we een voorbeeld gebruiken om erachter te komen hoe formulieren verwerken in PHP.
We zullen implementeren eenvoudige taak: u moet 2 velden maken (voor- en achternaam), deze gegevens overbrengen naar het action.php-script, als resultaat zou een begroeting moeten verschijnen "Welkom, achternaam voornaam"... Wie is vergeten hoe formulieren worden gemaakt en welke velden er zijn, kunt u zien. Laten we een test.html-bestand maken:

Naam: Achternaam:


Houd er rekening mee dat het action.php-bestand (in ons geval) zich in dezelfde map moet bevinden als het test.html-bestand. Hier kunt u zowel relatieve als specificeren absolute paden... Wees voorzichtig, veel fouten worden geassocieerd met het onjuist specificeren van het pad naar het formulierhandlerscript.

Laten we een action.php-bestand maken met de volgende inhoud:

Als we nu het test.html-bestand openen, de formuliervelden invullen en op de knop klikken, komen we bij het action.php-bestand, waar een bericht wordt weergegeven. V in dit geval de browser verwijst naar het action.php-script en geeft het door aan de "?" alle betekenissen naam attributen bevindt zich in tags gescheiden door &. Let op wat wordt vervangen door $ _SERVER.

We kunnen ons probleem oplossen door de QUERY_STRING-reeks te ontleden met standaard functies over het werken met strings in PHP, maar het is beter om een ​​ander mechanisme te gebruiken - dit is het gebruik van de $ _REQUEST array. PHP plaatst alle gegevens die uit formuliervelden worden ontvangen in de $ _REQUEST-array, ongeacht hoe de gegevens zijn overgedragen: POST of GET (u kunt erachter komen via $ _SERVER ["REQUEST_METHOD"]). Laat me je eraan herinneren hoe deze methoden verschillen:

De GET-methode is openbaar, de POST-methode is privé, d.w.z. ze verschillen in de manier waarop ze parameters worden doorgegeven. Voorbeeld:

1) Als we gebruiken post methode: mijnsite.ru/request.php.
2) Als we gebruiken methode krijgen: mijnsite.ru/request.php?myname=SaAlexa&surname=SaGulynin ".

Naast de $ _REQUEST array, creëert PHP ook de $ _GET en $ _POST arrays. Laten we nu onze taak uitvoeren, gebaseerd op de opgedane kennis:

Als we nu het formulier invullen en op de knop klikken, zullen we zien dat het action.php-script ons begroet met achternaam en voornaam. Alles werkt correct.

Hier is alles in orde, maar als we de naam van het script wijzigen, moeten we wijzigingen aanbrengen in het test.html-bestand. Laten we het action.php-bestand aanpassen zodat, door het te openen, ofwel een formulier wordt weergegeven wanneer we niets hebben ingediend, of een begroeting wanneer we op de knop klikken:

"> Naam: Achternaam:


Nu zijn we niet afhankelijk van de naam van het script, want we stellen het in via de omgevingsvariabele $ _SERVER ["SCRIPT_NAME"]. = $ _ SERVER ["SCRIPT_NAME"]?> Is gelijk aan .
Naast de omgevingsvariabele SCRIPT_NAME zijn er nog vele andere.

Vaak kunt u op websites pagina's vinden waarop HTML-formulieren worden gehost. Webformulieren zijn een handige manier om informatie van uw sitebezoekers te krijgen. Een voorbeeld hiervan is - dat feedback geeft aan bezoekers en siteontwikkelaars. Formulieren zijn ook handig voor site-ontwikkelaars bij het ontwikkelen van een CMS, waarmee de belangrijkste eigenschap van de site - relevantie - behouden blijft. Dit artikel richt zich op de basisprincipes van het maken van HTML-formulieren, hun verwerking en methoden voor het overbrengen van gegevens van schermformulieren naar PHP-scripts.

1) Maak een eenvoudig formulier

Tags

en
stel het begin en einde van het formulier in. Begintag van formulier
bevat twee attributen: actie en methode... Het action attribuut bevat de URL van het script dat moet worden aangeroepen om het script te verwerken. Attribuut methode vertelt de browser wat voor soort HTTP-verzoek moet worden gebruikt om het formulier in te dienen; Mogelijke waarden NA en KRIJGEN.

Opmerking

Het belangrijkste verschil tussen de POST- en GET-methoden is de manier waarop informatie wordt verzonden. In de GET-methode worden parameters door de adresbalk geleid, d.w.z. in feite worden in de HTTP-verzoekheader, terwijl in de POST-methode, de parameters door de hoofdtekst van het HTTP-verzoek geleid en worden ze op geen enkele manier weerspiegeld in de vorm van de adresbalk.

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

Taak: Stel dat u een vervolgkeuzelijst moet maken met de jaren 2000 tot 2050.
Oplossing: Het is noodzakelijk om een ​​HTML-formulier te maken met een SELECT-element en PHP - een script voor het verwerken van het formulier.

Discussie:

Laten we eerst twee bestanden maken: formulier.html en actie.php... In bestand formulier.html bevat een html-formulier met een vervolgkeuzelijst. Bovendien kunnen de waarden in de lijst op twee manieren worden opgegeven:

I. Gegevens handmatig invoeren:

II. Gegevens invoeren via een lus:

Zoals je kunt zien, is het tweede voorbeeld met een lus compacter. Ik denk dat het niet nodig is om het script van de handler van dit formulier mee te nemen, omdat het op dezelfde manier wordt verwerkt als een tekstveld, d.w.z. lijstwaarden kunnen worden opgehaald uit superglobale array $ _POST.

Beschrijving:

Laten we een HTML-formulier maken om een ​​bestand naar de server te sturen.




Het gegeven html-formulier bevat het element bladeren, waarmee een dialoogvenster wordt geopend voor het kiezen van een bestand om naar de server te uploaden. Door op de knop te drukken "Bestand overzetten", wordt het bestand doorgegeven aan het handlerscript.

Dan moet je een scripthandler schrijven actie.php... Voordat u de handler schrijft, moet u beslissen in welke map we het bestand willen kopiëren:

if (isset ($ _ FILES ["mijnbestand"])) // Als het bestand bestaat
{
$ catalogus = "../afbeelding/"; // Onze catalogus
if (is_dir ($ catalogus)) // Als er zo'n map is
{
$ mijnbestand = $ _FILES ["mijnbestand"] ["tmp_name"]; // Tijdelijk bestand
$ mijnbestandsnaam = $ _FILES ["mijnbestand"] ["naam"]; // Bestandsnaam
if (! kopie ($ mijnbestand, $ catalogus)) echo "Fout tijdens het kopiëren van bestand"... $ mijnbestandsnaam // Als het bestand niet kon worden gekopieerd
}
else mkdir ("../afbeelding/"); // Als zo'n map niet bestaat, zullen we deze maken
}
?>

Opmerking

Als u erop vertrouwt dat gebruikers bestanden naar uw server uploaden, moet u uiterst voorzichtig zijn. Aanvallers kunnen "slechte" code in een afbeelding of bestand injecteren en naar de server sturen. In dergelijke gevallen moet u het downloaden van bestanden strikt controleren.

Dit voorbeeld laat zien hoe u een map maakt en een bestand naar die map op de server kopieert.

Ik zou ook graag een voorbeeld willen demonstreren met het element selectievakje... Dit element verschilt enigszins van andere elementen doordat, zo niet een van de elementen selectievakje’A is niet geselecteerd, dan is de superglobal $ _POST zal een lege waarde retourneren:


Blauw
zwart
wit

if (! leeg ($ _ POST ["mijnkleur"])) echo $ _POST ["mijnkleur"]; // Als er minimaal 1 item is geselecteerd
anders echo "Selecteer een waarde";
?>

PHP-formulier - Werken met formulieren in PHP is de achtste les van de PHP-tutorial. In deze tutorial zullen we het hebben over het verwerken van formulieren met PHP.

Werken met formulieren

Met PHP kunt u gegevens verwerken die de gebruiker in formuliervelden heeft ingevoerd. Nadat de verzendknop is geactiveerd, worden de gegevens verzonden naar de handlerpagina die is opgegeven in het actieveld van het element

... Op de pagina - de handler is een PHP-script dat bepaalde bewerkingen uitvoert op de ontvangen gegevens, bijvoorbeeld een brief genereert en verzendt volgens de details die door de gebruiker zijn opgegeven.

Gegevens doorgeven aan de behandelaar.

De gegevens van het formulier worden als een reeks naam/waarde-paren naar de server verzonden. Dit betekent dat de naam van elk formulierelement (verschijnt in het NAME-attribuut van de tag) is gekoppeld aan de waarde van dat element (ingevoerd of geselecteerd door de gebruiker). De naam/waarde-indeling die voor verzending wordt gebruikt, is naam = waarde.

Alle gegevens die van het formulier naar het handlerprogramma worden doorgegeven, bevinden zich in de volgende superglobale arrays: $ _ GET, $ _POST en $ _REQUEST.

$ _GET - bevat alle waarden die zijn doorgegeven door de GET-methode.

$ _POST - Bevat alle waarden die door de POST-methode zijn doorgegeven.

$ _REQUEST - Bevat alle waarden die zijn doorgegeven door POST- en GET-methoden.

Achternaam:

Dorp:

Bericht:

Na het indrukken van de knop indienen van dit formulier worden alle gegevens doorgegeven aan de handler proces.php ... Aangezien dit formulier de methode gebruikt: NA , dan bevinden alle variabelen zich in de array$ _POST.

Laten we nu een handler maken:

echo "Naam: ". $ _POST ["FNaam"]. "
»;
echo "Achternaam: ". $ _POST ["LNaam"]. "
»;
echo "Stad: ". $ _POST ["Stad"]. "
»;
echo "
»;
echo "Uw bericht:". $ _POST ["Bericht"];
?>

Plaats dit bestand in de map met de formulierpagina. Wanneer u nu het formulier gebruikt, worden de gegevens doorgegeven aan de handler, die een bericht met de gebruikersgegevens zal weergeven.

$ _Request array

Een superglobale array gebruiken$ _Verzoek erg handig, vooral als niet bekend is met welke methode de gegevens zijn overgedragen.

Met de foreach-lus kun je de waarden van de $ _Request-array herhalen.

In dit voorbeeld tonen we alle waarden in de $ _Request array. Dit kan worden gedaan om de juistheid van gebruikersinvoer te controleren. Dat wil zeggen, de gebruiker voert gegevens in het formulier in, klikt op verzenden, maar in plaats van de gegevens te verwerken, wordt op zijn scherm een ​​bericht weergegeven met de door hem ingevoerde gegevens en de inscriptie bevestigen of weigeren. Dit idee is op veel sites toegepast, en zelfs in veel programma's.

In deze tutorial hebben we geleerd hoe we PHP kunnen gebruiken om formulieren te verwerken. Zoals u kunt zien, is PHP een krachtig hulpmiddel voor het verwerken van formulieren, waarmee u een breed scala aan manipulaties met gebruikersgegevens kunt uitvoeren, zoals het opslaan van gebruikersgegevens in een database voor latere autorisatie, het verzenden van een bericht naar de e-mail van de gebruiker en nog veel meer.

In de volgende les leren we hoe u gebruikersinvoer valideert voordat u deze rechtstreeks verwerkt.

HTML-formulieren zijn complexe interface-elementen. Ze bevatten verschillende functionele elementen: invoervelden en