Sessioonid ja vormid PHP-s
Oletame, et meil on kaks PHP faili. Paneme
faili test1.php vormi, mis küsib
kasutajalt kahte numbrit:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Samasse faili paneme vormi töötlemise koodi. Selles koodis kirjutame sisendite andmed sessiooni:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Oluline nüanss: failis peab vormi töötlemise kood olema enne vormi ennast. Miks: sest selles koodis töötame sessiooniga ja see tähendab, et enne seda ei tohiks olla mingit väljundit ekraanile.
Leiame nüüd failis test2.php
sessioonis salvestatud numbrite summa:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
Millises järjestuses peaks see kõik
töötama? Kõigepealt läheb kasutaja
lehele test1.php, täidab vormi
ja vajutab nuppu. Pärast seda satub ta jälle
lehele test1.php, kuid nüüd juba saadetud
vormiandmetega. Sel juhul satub ta tingimusesse,
milles kirjutame vormi andmed sessiooni.
Seejärel peaks kasutaja käsitsi minema
lehele test2.php - ja seal näeb ta
sisestatud numbrite summa.
Võite küsida: miks nii keeruliseks minna? La
vormi oleks võinud kohe saata lehele
test2.php. Asi on selles, et antud
juhul on mugavus selles, et vorm ise ja selle
töötlemise kood asuvad ühel lehel.
See muidugi pole alati mugav, kuid mõnikord
on seda vaja.
Ühel lehel küsige vormi abil kasutajalt perekonnanimi, eesnimi ja vanus. Kirjutage need andmed sessiooni. Teisele lehele minnes kuvage need andmed ekraanil.