Uitleg HTML formulieren en PHP
Een HTML-formulier is een manier om gegevens van de gebruiker op te vragen, bijvoorbeeld tekst, getallen of een keuze uit een lijst. Denk aan een zoekveld of een formulier om een locatie toe te voegen. PHP wordt gebruikt om de gegevens uit dat formulier op te vangen en te verwerken.
Een basisformulier in HTML
Hieronder zie je een formulier met drie velden: één tekstveld en twee getallen.
<form action="verwerk.php" method="post">
<label>Naam:</label>
<input type="text" name="naam"><br>
<label>X-coördinaat:</label>
<input type="number" name="x"><br>
<label>Y-coördinaat:</label>
<input type="number" name="y"><br>
<input type="submit" value="Toevoegen">
</form>
Wat gebeurt hier?
- De gegevens worden verstuurd naar het bestand
verwerk.php. - De methode is
POST, wat betekent dat de gegevens niet zichtbaar zijn in de URL. - Elk invoerveld heeft een
name-attribuut (bijvoorbeeldname="naam") — dat is belangrijk!
Uitlezen in PHP met $_POST
In verwerk.php lees je de gegevens uit met de superglobale array $_POST:
<?php
$naam = $_POST['naam'];
$x = $_POST['x'];
$y = $_POST['y'];
Wil je zeker weten of het formulier is ingevuld? Dan kun je controleren met isset():
<?php
if (isset($_POST['naam'])) {
// verwerk de invoer
}
Of je controleert of het formulier verzonden is via de submit-knop:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// formulier is verzonden
}
Uitlezen met GET
Als je in plaats van method="post" kiest voor method="get", dan gebruik je in PHP $_GET:
<?php
$tijd = $_GET['tijd'];
En de gegevens komen zichtbaar in de URL te staan, bijvoorbeeld:
verwerk.php?tijd=10:30:00
Richtlijn: GET gebruik je vooral bij zoekvelden of filters, POST bij het verzenden van gegevens zoals bij formulieren met meerdere velden.
Beveiliging: altijd controleren
Als je invoer van gebruikers verwerkt, controleer dan:
- of het veld bestaat (
isset($_POST['x'])) - of het de juiste vorm heeft (bijvoorbeeld een getal)
- of het veilig is om in een query te stoppen (gebruik
prepare())
Voorbeeld: formulier + verwerking
HTML-formulier (toevoegen.html):
<form action="verwerk.php" method="post">
Naam: <input type="text" name="naam"><br>
X: <input type="number" name="x"><br>
Y: <input type="number" name="y"><br>
<input type="submit" value="Opslaan">
</form>
PHP-verwerking (verwerk.php):
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$naam = $_POST['naam'] ?? '';
$x = isset($_POST['x']) ? (int) $_POST['x'] : null;
$y = isset($_POST['y']) ? (int) $_POST['y'] : null;
// Validatievoorbeeld
if ($naam !== '' && is_int($x) && is_int($y)) {
// Verbind met de database en sla op (bijv. met prepare())
// $stmt = $mysqli->prepare("INSERT INTO locaties (naam, x, y) VALUES (?, ?, ?)");
// $stmt->bind_param("sii", $naam, $x, $y);
// $stmt->execute();
// $stmt->close();
} else {
// Foutafhandeling/feedback aan gebruiker
}
}