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:
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:
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.
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:
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