Usando sesiones ..
procesa.php
Código PHP:
<?
// registro del array $_POST en una variable de sesión .. contendrá todas las variables de tu formulario ..
session_start();
$_SESSION['variables']=$_POST;
// Validas tus datos de $_POST o el método que corresponda .. y los procesas
// Si hay error .. redireccionas como gustes .. un link, o automático vía header() .. etc ...
?>
formulario.php
Código PHP:
<?
// se obtienen las variables de sesión si está definida (osease, si se devolvió al formulario).
session_start();
if (isset($_SESSION['variables'])){
$variables=$_SESSION['variables'];
} else {
$variables=array();
}
?>
<form action="porcesa.php" method="post">
<input type="text" name="nombre_variable" value="<? echo $variables['nombre_variable'] ?>">
etc formulario y botón submit ...
</form>
Si $variables['nombre_variable'] no tiene valor .. en el campo "input" no va a tener predefinido .. (sólo con determinada configuración de error_reporting te dirá algo tipo "indice no existe en array" .. se puede solventar con isset() a esa variable en concreto .. omití esa parte de validación .. pero es simple implementarla).
Al usar sesiones (y si se propaga el SID por cookies como así se asume en el ejemplo ya que no lo propagao yo a mano ..) daría igual que el salto entre el formulario.php y el proceso.php exista alguna página más por medio ... estilo "mensajes de error" u otras... tus variables viajan en la sessión (mejor dicho permanecen en la sesión) así que .. ni se ven ni van hacia el cliente (navegador) en nigún momento ..
Las sesiones hay que aprovecharlas .. no sólo són útiles para "ocultar" datos tipo "contraseñas" sino para operaciones cotidianas como la presentada.
Un saludo,