Puoi usare questo come linea guida:
Form nella pagina form.php
Codice PHP:
<?php session_start(); //questo va tassativamente all'inizio della pagina, prima di qualsiasi altra cosa ?>
<form name="form1" method="post" action="script.php">
Nome: <input type="text" name="nome" value="<?php isset($_SESSION['nome']) ? echo $_SESSION['nome'] : '' ?>" />
<div style="color red"><?php isset($_SESSION['errore']) ? echo $_SESSION['errore'] : '' ?></div>
Età: <input type="text" name="eta" value="<?php isset($_SESSION['eta']) ? echo $_SESSION['eta'] : '' ?>" />
<div style="color red"><?php isset($_SESSION['errore']) ? echo $_SESSION['errore'] : '' ?></div>
<input type="submit" name="submit" value="Invia" />
</form>
script.php
Codice PHP:
<?php
session_start();
// reset eventuali errori precedenti
unset($_SESSION['nome']);
unset($_SESSION['eta']);
unset($_SESSION['errore']);
// verifica se è stato inserito un nome oppure no (campo nome obbligatorio)
if ( ! isset($_POST['nome']) || $_POST['nome'] == '' )
{
// imposto solo l'età, se sono qui di sicuro nel campo nome non c'era scritto niente
$_SESSION['eta'] = $_POST['eta'];
$_SESSION['errore'] = 'Il campo nome è obbligatorio';
header('Location: http://localhost/form.php');
}
// verifica se è stato inserita l'età oppure no (campo età obbligatorio)
else if ( ! isset($_POST['eta']) || $_POST['eta'] == '' )
{
// imposto solo il nome, se sono qui di sicuro nel campo eta non c'era scritto niente
$_SESSION['nome'] = $_POST['nome'];
$_SESSION['nome'] = 'Il campo età è obbligatorio';
header('Location: http://localhost/form.php');
}
else
{
// tutto ok, i campi sono stati compilati
}
?>
Non l'ho testato ma salvo qualche errore di battitura dovrebbe funzionare.