quando tu esegui "header("location:form.php"); " ricarichi la pagine "form.php" reinterpretando il suo contenuto.
Se nel file "form.php" inserisci
codice:
<?php
session_start();
$_SESSION['nome']=$nome;
?>
in pratica vai a riresettare la variabile impsotata prima del redirect.
se vuoi ricavare il nome dal per stamparlo, devi leggere dalla $_SESSION non scriverci.
Il seguente codice, nel ritorno verifica il codice di ritorno.
Se non corretto annulla le variabili, altrimenti le riprende.
Pagina "form.php"
Codice PHP:
<?php
session_start();
if ($_GET['Ret']!=$_SESSION['cod_return']){ //Verificare anche che se 'Ret' non è settata annulli il contenuto delle variabili.
$_SESSION['nome']=""; $_SESSION['cognome']="";$_SESSION['cod_return']="";
}
//Ricava Variabili da $_SESSION
$nome=$_SESSION['nome'];
$cognome=$_SESSION['cognome'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<form name="form1" method="post" action="controllo.php">
<input type="text" name="nome" id="nome" value="<?php echo $nome ?>">
<input type="text" name="cognome" id="cognome">
<input type="submit" name="button" id="button" value="Invia">
</form>
</body>
</html>
pagina "controllo.php"
Codice PHP:
<?php
session_start();
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$_SESSION['nome']=$nome;
if (empty($cognome)){
/* INIZIO: Codice per gestire ritorno */
$CodeRET="sdfdgfksgkgsk";
$_SESSION['cod_return']=$CodeRET;
/* FINE: Codice per gestire ritorno */
header("location:form.php?Ret=$CodeRET");
}
?>
Nota:
E' inoltre consigliabile mettere il "session_start(); " all'inizio del file in modo che non dia possibili problemi di header già inviati.