Va ser muchísimo más trabajoso tratar de simular el método post para volver al formulario.
Con variables de sesión solamente tienes que guardar esas 15 variables (no son tantas como crees) en la sesión y en el formulario decir "Si está tal variable de sesión, pongo su valor en el "value" de tal campo del form".
formulario.php Código PHP:
<?php
session_start();
?>
<form action="script_que_procesa.php" method="post">
Usuario:
<input type="text" name="usuario" value="<?php echo (isset($_SESSION['usuario']))?$_SESSION['usuario']:''; ?>" />
<br />
Email:
<input type="text" name="email" value="<?php echo (isset($_SESSION['email']))?$_SESSION['email']:''; ?>" />
<br />
Usuario:
<input type="submit" />
</form>
Y faltaría el script que procesará:
script_que_procesa.php Código PHP:
<?php
session_start();
// Guardas todo el array $_POST en la session:
$_SESSION = $_POST;// Ojo... sólo haz esto si notienes más variables en la sesión
// Si tienes más, entonces haces un foreach y puedes manejar un array bidimensional.
// Y listo!
if(hay error){
header("location: formulario.php");
}
?>
<?php echo (isset($_SESSION['email']))?$_SESSION['email']:''; ?> significa:
Si está definida la variable, $SESSION['email'], escribe su valor aquí, si no, coloca ua cadena vacía.
Saludos