Sessies en vorms in PHP
Laat ons aanneem ons het twee PHP-lêers. Kom ons plaas in
lêer test1.php 'n vorm wat die
gebruiker vir twee getalle vra:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
In hierdieselfde lêer plaas ons die kode om die vorm te verwerk. In hierdie kode sal ons die insetdata in die sessie skryf:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
'n Belangrike fynpunt: in die lêer moet die vormverwerkingskode voor die vorm self wees. Hoekom: omdat ons in hierdie kode met die sessie werk, en gevolglik moet daar geen uitset na die skerm voor dit wees nie.
Kom ons vind nou in lêer test2.php die
som van die getalle wat in die sessie gestoor is:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
In watter volgorde moet dit alles werk? Eerstens gaan die gebruiker na die
bladsy test1.php, vul die vorm in
en druk op die knoppie. Daarna beland hy weer
op test1.php, maar nou met die gestuurde
vormdata. Terselfdertyd beland hy in die voorwaardes,
waarin ons die vormdata in die sessie skryf.
Daarna moet die gebruiker met die hand na die
bladsy test2.php gaan - en daar sal hy
die som van die ingevoerde getalle sien.
Jy mag vra: hoekom so ingewikkeld? Want
ons kon dadelik die vorm na die bladsy
test2.php gestuur het. Die saak is dat die gerief in hierdie
geval daarin lê dat die vorm self en die kode
vir die verwerking daarvan op een bladsy geplaas word.
Dit is natuurlik nie altyd gerieflik nie, maar soms
is dit nodig.
Op een bladsy, gebruik 'n vorm om die gebruiker se van, voornaam en ouderdom te vra. Skryf hierdie data in die sessie. By toegang tot 'n ander bladsy, vertoon hierdie data op die skerm.