Sesjoner og skjemaer i PHP
La oss si at vi har to PHP-filer. La oss i
filen test1.php plassere et skjema som spør
brukeren om to tall:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
I samme fil plasserer vi koden som behandler skjemaet. I denne koden vil vi skrive dataene fra input-feltene til sesjonen:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
En viktig nyanse: i filen må koden for skjemabehandling stå før selve skjemaet. Hvorfor: fordi i denne koden arbeider vi med sesjonen, og derfor bør det ikke være noen utdata til skjermen før dette.
La oss nå i filen test2.php finne
summen av tallene som er lagret i sesjonen:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
I hvilken rekkefølge bør alt dette
fungere? Først går brukeren inn på
siden test1.php, fyller ut skjemaet
og trykker på knappen. Etter det havner de igjen på
test1.php, men nå med de sendte
skjemadataene. Samtidig havner de i betingelsen,
der vi skriver skjemadataene til sesjonen.
Deretter må brukeren manuelt gå inn på
siden test2.php - og der vil de se
summen av de innskrevne tallene.
Du kan spørre: hvorfor gjøre det så innfløkt? Tross alt
kunne man umiddelbart sendt skjemaet til siden
test2.php. Saken er at i dette
tilfellet ligger bekvemmeligheten i at selve skjemaet og koden
for dens behandling plasseres på samme side.
Dette er selvfølgelig ikke alltid praktisk, men noen ganger
kan det være nødvendig.
På én side, ved hjelp av et skjema, spør du brukeren om etternavn, fornavn og alder. Skriv disse dataene til sesjonen. Ved innlogging på en annen side, vis disse dataene på skjermen.