Sessioni e form in PHP
Supponiamo di avere due file PHP. Inseriamo nel
file test1.php un modulo che chiede
all'utente due numeri:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Nello stesso file, inseriamo il codice di elaborazione del modulo. In questo codice, scriveremo i dati degli input nella sessione:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Una sfumatura importante: nel file, il codice di elaborazione del modulo deve trovarsi prima del modulo stesso. Perché: perché in questo codice lavoriamo con la sessione, e quindi non ci deve essere alcun output a schermo prima di questo.
Ora, nel file test2.php, troviamo
la somma dei numeri salvati nella sessione:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
In quale sequenza dovrebbe funzionare tutto questo? Prima, l'utente accede alla
pagina test1.php, compila il modulo
e preme il pulsante. Dopodiché, ritorna
su test1.php, ma questa volta con i dati
inviati dal modulo. In questo caso, entra nella condizione
in cui scriviamo i dati del modulo nella sessione.
Poi, l'utente deve accedere manualmente alla
pagina test2.php - e lì vedrà
la somma dei numeri inseriti.
Potreste chiedere: perché complicarsi così la vita? Dopotutto
si poteva inviare subito il modulo alla pagina
test2.php. Il fatto è che, in questo
caso, il vantaggio è che il modulo stesso e il codice
per la sua elaborazione si trovano sulla stessa pagina.
Certo, questo non è sempre conveniente, ma a volte
può essere necessario.
Su una pagina, utilizzando un modulo, chiedete all'utente cognome, nome ed età. Registrate questi dati nella sessione. Quando si accede a un'altra pagina, visualizzate questi dati sullo schermo.