Denkbeeldige verzend php. HTML-formulieren. Hoe problemen met PHP _SELF te voorkomen

Laatste update: 1/11/2015

Een van de belangrijkste manieren waarop een website gegevens verzendt, is via formulierverwerking. Formulieren vertegenwoordigen speciale HTML-opmaakelementen die verschillende invoerelementen bevatten: tekstvelden, knoppen, enz. En met behulp van deze formulieren kunnen we enkele gegevens invoeren en naar de server sturen. En de server verwerkt deze gegevens al.

Het maken van formulieren bestaat uit de volgende aspecten:

    Een element maken in HTML-opmaak

    Voeg één of meerdere invoervelden toe aan dit element

    De gegevensoverdrachtmethode instellen: GET of POST

    Instellen van het adres waarnaar de ingevoerde gegevens worden verzonden

Laten we dus een nieuw formulier maken. Om dit te doen, zullen we een nieuw bestand form.php definiëren, waarin we de volgende inhoud zullen plaatsen:

Inloggen op de site Inloggen:

Wachtwoord:

Het action="login.php" attribuut van het formulierelement geeft aan dat de formuliergegevens door het script worden verwerkt inloggen.php, die zich bij het bestand bevindt formulier.php in één map. En het method="POST" attribuut geeft aan dat de POST-methode zal worden gebruikt als de gegevensoverdrachtmethode.

Laten we nu een bestand maken inloggen.php, die de volgende inhoud zal hebben:

Om de formuliergegevens op te halen, wordt de globale variabele $_POST gebruikt. Het vertegenwoordigt een associatieve reeks gegevens die worden verzonden met behulp van de POST-methode. Met behulp van de sleutels kunnen we de verzonden waarden verkrijgen. De sleutels in deze array zijn de waarden van de naamattributen van de formulierinvoervelden.

Omdat het naamattribuut van het login-invoerveld de waarde login() heeft, vertegenwoordigt de waarde van dit veld in de $_POST-array de "login"-sleutel: $_POST["login"]

En aangezien er situaties kunnen zijn waarin het invoerveld niet wordt ingesteld, bijvoorbeeld wanneer u rechtstreeks naar het script gaat: http://localhost:8080/login.php. In dit geval is het raadzaam om de beschikbaarheid van gegevens te controleren met behulp van de functie isset() voordat u de gegevens verwerkt. En als de variabele is ingesteld, retourneert de functie isset() true .

Nu hebben we toegang tot het formulier:

En wanneer op de knop wordt gedrukt, worden de ingevoerde gegevens via de POST-methode naar het script verzonden. inloggen.php:

Het is niet nodig om de formuliergegevens naar een ander script te sturen; u kunt de formuliergegevens in hetzelfde formulierbestand verwerken. Om dit te doen, gaan we het bestand wijzigen formulier.php als volgt:

Inloggen op de site Inloggen:

Wachtwoord:

Gegevensbeveiliging

Gegevensbeveiliging is van groot belang in PHP. Laten we eens kijken naar een paar eenvoudige mechanismen die de veiligheid van onze website kunnen verbeteren.

Maar laten we eerst het formulier uit het vorige onderwerp nemen en proberen er wat gegevens in in te voeren. Laten we bijvoorbeeld “alert(hi);” invoeren in het inlogveld, en “wachtwoord” in het wachtwoordveld:

Nadat de gegevens naar de html-markup zijn verzonden, wordt javascript-code geïnjecteerd, waardoor een venster met een bericht wordt weergegeven.

Om dergelijke beveiligingsproblemen te voorkomen, moet u de functie htmlentities() gebruiken:

If(isset($_POST["login"]) && isset($_POST["wachtwoord"]))( $login=htmlentities($_POST["login"]); $password = htmlentities($_POST["wachtwoord" ]); echo "Je login: $login
Uw wachtwoord: $wachtwoord"; )

En zelfs na het invoeren van de html- of javascript-code worden alle tags geëscaped en krijgen we de volgende uitvoer:

Nog een functie: met de functie strip_tags() kunt u HTML-tags volledig uitsluiten:

If(isset($_POST["login"]) && isset($_POST["wachtwoord"]))( $login=strip_tags($_POST["login"]); $password = strip_tags($_POST["wachtwoord" ]); echo "Je login: $login
Uw wachtwoord: $wachtwoord"; )

Het resultaat van de werking met dezelfde invoer zal de volgende uitvoer zijn.

Vaak kunt u op websites pagina's vinden waarop HTML-formulieren zijn geplaatst. Webformulieren zijn een handige manier om informatie te ontvangen van bezoekers van uw site. Een voorbeeld hiervan is het gastenboek, waarin feedback wordt gegeven aan bezoekers en site-ontwikkelaars. Formulieren zijn ook handig voor site-ontwikkelaars bij het ontwikkelen van een CMS, waardoor ze de belangrijkste eigenschap van de site kunnen behouden: relevantie. Dit artikel is gewijd aan de basisprincipes van het maken van HTML-formulieren, de verwerking ervan en manieren om gegevens van schermformulieren naar PHP-scripts over te dragen.

1) Maak een eenvoudig formulier

Labels En definieer het begin en einde van het formulier. Startformuliertag 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 welk type 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 overgedragen. Bij de GET-methode worden parameters via de adresbalk doorgegeven, d.w.z. hoofdzakelijk in de HTTP-verzoekheader, terwijl bij de POST-methode de parameters worden verzonden via de hoofdtekst van het HTTP-verzoek en op geen enkele manier worden weerspiegeld in de adresbalk.

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

Discussie:

Laten we eerst twee bestanden maken: form.html en action.php. Het form.html-bestand bevat een HTML-formulier met een vervolgkeuzelijst. Bovendien kunnen de waarden in de lijst op twee manieren worden gespecificeerd:

I. Handmatige gegevensinvoer:


2000
2001
2002
……………………………………………
2050

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 handler-script voor dit formulier aan te bieden, omdat het op precies dezelfde manier wordt verwerkt als een tekstveld, d.w.z. lijstwaarden kunnen worden opgehaald uit een superglobale array.

$_POST

Beschrijving:




Laten we een HTML-formulier maken om een ​​bestand naar de server te verzenden. Dit html-formulier bevat een element bladeren , waarmee een dialoogvenster wordt geopend waarin u een bestand kunt selecteren dat u naar de server wilt uploaden. Wanneer u op de knop drukt

"Bestand overbrengen"

Opmerking

, wordt het bestand doorgegeven aan het handlerscript.

Vervolgens moet u de action.php-handler scripten. Voordat we de handler schrijven, moeten we beslissen naar welke map we het bestand zullen kopiëren:

Als u erop vertrouwt dat gebruikers bestanden naar uw server uploaden, moet u uiterst voorzichtig zijn. Aanvallers kunnen ‘slechte’ code insluiten in een afbeelding of bestand en deze naar de server sturen. In dergelijke gevallen moet u het downloaden van bestanden strikt controleren. Dit voorbeeld demonstreert het maken van een map en het kopiëren van een bestand naar die map op de server. Ik wil ook graag een voorbeeld demonstreren met het element Dit voorbeeld demonstreert het maken van een map en het kopiëren van een bestand naar die map op de server. selectievakje Ik denk dat het niet nodig is om het handler-script voor dit formulier aan te bieden, omdat het op precies dezelfde manier wordt verwerkt als een tekstveld, d.w.z. lijstwaarden kunnen worden opgehaald uit een superglobale array. Dit element verschilt enigszins van andere elementen doordat het niet een van de elementen is


’a niet is geselecteerd, dan is de superglobale variabele
zal een lege waarde retourneren:
Blauw




Zwart

Wit

Als u nog andere vragen heeft of iets niet duidelijk is, welkom bij ons

Dit artikel gaat gedetailleerd in op het gebruik van de PHP _SELF-variabele.

Wat is de PHP _SELF-variabele?

De PHP _SELF-variabele retourneert de naam en het pad van het huidige bestand (ten opzichte van de documentroot). U kunt deze variabele gebruiken in het action-attribuut van het formulier. Er zijn ook enkele nuances die u moet kennen. Natuurlijk kunnen we deze nuances niet negeren.

Laten we een paar voorbeelden bekijken.

Echo $_SERVER["PHP_SELF"];

1) Laten we aannemen dat uw php-bestand zich op het volgende adres bevindt:

Http://www.uwserver.com/form-action.php

In dit geval zal de PHP _SELF-variabele het volgende bevatten:

"/form-action.php"

2) Laten we aannemen dat uw PHP-bestand zich op dit adres bevindt:

Http://www.uwserver.com/dir1/form-action.php

PHP_SELF wordt:

Normaal gesproken wordt de PHP _SELF-variabele gebruikt in het action-attribuut van de formuliertag. Het actieattribuut specificeert het adres waarnaar de inhoud van het formulier na bevestiging wordt verzonden (de gebruiker klikt op de knop met type = "verzenden"). In de regel is dit dezelfde pagina waar het formulier vandaan kwam.

Als u echter de naam van het bestand waarnaar in het formulier wordt verwezen, hernoemt, moet u de bestandsnaam in het action-attribuut hernoemen, anders zal het formulier niet werken.

De PHP _SELF-variabele bespaart u onnodige correcties, omdat het pagina-adres automatisch wordt gegenereerd op basis van de bestandsnaam.

Stel dat u een formulierbestand heeft met de naam form-action.php en u wilt dat het formulier na bevestiging naar hetzelfde bestand wordt verzonden. Meestal schrijven ze zo:

Maar u kunt de PHP _SELF-variabele gebruiken in plaats van form-action.php. In dit geval ziet de code er als volgt uit: