PHP- formulierverwerking
De PHP-superglobalen $_GET en $_POST worden gebruikt om formuliergegevens te verzamelen.
PHP - Een eenvoudig HTML-formulier
Het onderstaande voorbeeld toont een eenvoudig HTML-formulier met twee invoervelden en een verzendknop:
Voorbeeld
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Wanneer de gebruiker het bovenstaande formulier invult en op de verzendknop klikt, worden de formuliergegevens voor verwerking verzonden naar een PHP-bestand met de naam "welcome.php". De formuliergegevens worden verzonden met de HTTP POST-methode.
Om de ingediende gegevens weer te geven, kunt u eenvoudig alle variabelen echoën. De "welkom.php" ziet er als volgt uit:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
De output zou er ongeveer zo uit kunnen zien:
Welcome John
Your email address is [email protected]
Hetzelfde resultaat kan ook worden bereikt met de HTTP GET-methode:
Voorbeeld
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
en "welcome_get.php" ziet er als volgt uit:
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
De bovenstaande code is vrij eenvoudig. Het belangrijkste ontbreekt echter. U moet formuliergegevens valideren om uw script te beschermen tegen kwaadaardige code.
Denk aan VEILIGHEID bij het verwerken van PHP-formulieren!
Deze pagina bevat geen formuliervalidatie, het laat alleen zien hoe u formuliergegevens kunt verzenden en ophalen.
De volgende pagina's laten echter zien hoe u PHP-formulieren verwerkt met het oog op veiligheid! Een goede validatie van formuliergegevens is belangrijk om uw formulier te beschermen tegen hackers en spammers!
GET versus POST
Zowel GET als POST creëren een array (bijv. array( key1 => value1, key2 => value2, key3 => value3, ...)). Deze array bevat sleutel/waarde-paren, waarbij sleutels de namen zijn van de formulierbesturingselementen en waarden de invoergegevens van de gebruiker zijn.
Zowel GET als POST worden behandeld als $_GET en $_POST. Dit zijn superglobalen, wat betekent dat ze altijd toegankelijk zijn, ongeacht het bereik - en je kunt ze openen vanuit elke functie, klasse of bestand zonder iets speciaals te hoeven doen.
$_GET is een reeks variabelen die via de URL-parameters aan het huidige script worden doorgegeven.
$_POST is een array van variabelen die via de HTTP POST-methode aan het huidige script wordt doorgegeven.
Wanneer GET gebruiken?
Informatie verzonden vanaf een formulier met de GET-methode is voor iedereen zichtbaar (alle variabelenamen en waarden worden weergegeven in de URL). GET heeft ook limieten voor de hoeveelheid informatie die moet worden verzonden. De beperking is ongeveer 2000 tekens. Omdat de variabelen echter in de URL worden weergegeven, is het mogelijk om de pagina te bookmarken. Dit kan in sommige gevallen handig zijn.
GET kan worden gebruikt voor het verzenden van niet-gevoelige gegevens.
Opmerking: GET mag NOOIT worden gebruikt voor het verzenden van wachtwoorden of andere gevoelige informatie!
Wanneer gebruik je POST?
Informatie die wordt verzonden vanaf een formulier met de POST-methode is onzichtbaar voor anderen (alle namen/waarden zijn ingesloten in de hoofdtekst van het HTTP-verzoek) en kent geen limiet voor de hoeveelheid informatie die moet worden verzonden.
Bovendien ondersteunt POST geavanceerde functionaliteit zoals ondersteuning voor meerdelige binaire invoer tijdens het uploaden van bestanden naar de server.
Omdat de variabelen echter niet in de URL worden weergegeven, is het niet mogelijk om de pagina te bookmarken.
Ontwikkelaars geven de voorkeur aan POST voor het verzenden van formuliergegevens.
Laten we vervolgens kijken hoe we PHP-formulieren op een veilige manier kunnen verwerken!