Puedes usar una sesión, o una cookie o propagarlo por el URL nuevamente todas tus varaibles .. Lo más "rápido" y transparente es usar una sesión ..
Ejemplo:
formulario.php
Código PHP:
<?
// inicio uso sesiones
session_start();
// leeo la varaible de sesión ...
$variables=$_SESSION['variables'];
// tu formulario .. usa los parámetros "value" para predefinir su valor inicial. Serán los valores de lo que viaja en tu sesión (en el array) ..
?>
<form action="procesar.php" method="post">
<input type="text" name="variable_formulario" value="<? echo $variables['variable_formulario'] ?>">
</form>
procesar.php
Código PHP:
<?
session_Start();
// registro todo lo que venga del formulario (por POST) en una variable de sesión. Será un array.
$_SESSION['variables']=$_POST;
// validas .. etc ..
// Si hay error .. redirecciona a tu formulario.
header ("Location: formulario.php");
?>
El procedimiento sería igual si tu script de formulario y el de validación/proceso estubiera en el mismo script (no separados)
Un saludo,