Sessies en formulieren in PHP
Stel dat we twee PHP bestanden hebben. Laten we in
bestand test1.php een formulier plaatsen dat
de gebruiker twee getallen vraagt:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
In hetzelfde bestand plaatsen we de code voor het verwerken van het formulier. In deze code schrijven we de gegevens van de inputs naar de sessie:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Belangrijk nuance: in het bestand moet de code voor het verwerken van het formulier vóór het formulier zelf staan. Waarom: omdat we in deze code met de sessie werken, en er dus geen uitvoer naar het scherm mag zijn voordat dit gebeurt.
Laten we nu in bestand test2.php de
som van de getallen vinden, opgeslagen in de sessie:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
In welke volgorde moet dit allemaal werken? Eerst gaat de gebruiker naar
pagina test1.php, vult het formulier in
en drukt op de knop. Daarna komt hij weer op
test1.php terecht, maar nu met de verzonden
formuliergegevens. Hierbij komt hij in de voorwaarde,
waarin we de formuliergegevens in de sessie schrijven.
Vervolgens moet de gebruiker handmatig naar
pagina test2.php gaan - en daar zal hij de
som van de ingevoerde getallen zien.
Je kunt vragen: waarom zo ingewikkeld doen? Want
je kon het formulier direct naar de pagina
test2.php sturen. Het punt is dat in dit
geval het gemak is dat het formulier zelf en de code
voor de verwerking ervan op één pagina staan.
Dit is natuurlijk niet altijd handig, maar soms
is het nodig.
Vraag op één pagina met behulp van een formulier van de gebruiker de achternaam, voornaam en leeftijd. Schrijf deze gegevens naar de sessie. Toon bij het gaan naar een andere pagina deze gegevens op het scherm.