Periode 3 · Week 6

INSERT & Redirect (PRG)

Wat moet je kennen (samenvatting)#

1. Prepared statements (veilig INSERT)#

Uitleg
Je plaatst nooit variabelen direct in je SQL-string.
Met prepared statements scheid je SQL en data. Dat voorkomt SQL-injectie.

Wat moet je kennen

Voorbeeld

$title = trim($_POST['title'] ?? '');

$stmt = $pdo->prepare("INSERT INTO items (title) VALUES (:title)");
$stmt->execute([
    'title' => $title
]);

Onthoud: SQL en data blijven gescheiden.

2. Waarom geen variabelen direct in SQL?#

Uitleg
Als je variabelen direct in je query zet, kan een gebruiker je query manipuleren.

Fout voorbeeld

Fout

$pdo->query("INSERT INTO items (title) VALUES ('$title')");

Goed voorbeeld

Beter

$stmt = $pdo->prepare("INSERT INTO items (title) VALUES (:title)");
$stmt->execute(['title' => $title]);

3. Redirect na POST (PRG pattern)#

Uitleg
Na een POST-request redirect je naar een andere pagina.
Zo voorkom je dat een refresh opnieuw een INSERT uitvoert.

Wat moet je kennen

Voorbeeld

header("Location: index.php");
exit;

Onthoud: POST → INSERT → redirect → klaar.

Veelgemaakte fouten (kort)#

1. Geen prepared statement gebruiken

❌ Variabele direct in SQL-string zetten

✅ Gebruik altijd prepare() en execute()

2. Geen redirect gebruiken

❌ Refresh = dubbele insert

✅ Altijd redirect na succesvolle INSERT

3. exit vergeten na header()

Fout

header("Location: index.php");

Beter

header("Location: index.php");
exit;