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 (bijvoorbeeld name="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
    }
}

Uitleg PHP en MySQL