Sessioner og formularer i PHP
Lad os sige, at vi har to PHP-filer. Lad os i
filen test1.php placere en formular, der spørger
brugeren om to tal:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
I samme fil placerer vi koden, der behandler formularen. I denne kode vil vi skrive inputdataene til sessionen:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
En vigtig nuance: i filen skal koden til formularbehandling stå før selve formularen. Hvorfor: fordi vi i denne kode arbejder med sessionen, og derfor må der ikke være nogen output til skærmen før dette.
Lad os nu i filen test2.php finde
summen af de tal, der er gemt i sessionen:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
I hvilken rækkefølge skal alt dette
fungere? Først går brugeren ind på
siden test1.php, udfylder formularren
og trykker på knappen. Derefter ender de igen
på test1.php, men nu med de afsendte
formulardata. På dette tidspunkt kommer de ind i betingelsen,
hvor vi skriver formulardataene til sessionen.
Derefter skal brugeren manuelt gå ind på
siden test2.php - og der vil de se
summen af de indtastede tal.
Du kan spørge: hvorfor gøre det så indviklet? For
man kunne jo bare have sendt formularen direkte til siden
test2.php. Sagtens, men bekvemmeligheden i dette
tilfælde er, at selve formularren og koden
til dens behandling er placeret på samme side.
Dette er selvfølgelig ikke altid bekvemt, men nogle gange
er det nødvendigt.
På én side, brug en formular til at spørge brugeren om efternavn, fornavn og alder. Gem disse data i sessionen. Ved adgang til en anden side, vis disse data på skærmen.