Si dices que puedas tener un URL enorme .. date cuenta que las variables que puedas propagar por el URL no son infinitas .. hay límite (no recuerdo cuanto) y no es mucho.
Te recomedaría usar sesiones para este tipo de procesos.
En tu script de proceso de datos del formulario .. tomas todas tus variables que tienes en el array $_POST y las llevas a una variable de sesión:
Código PHP:
<?
session_start();
// haces tus validaciones y demás ..
// si no se cumplen y debes devolver a tal script ... vuelvas todo el array $_POST hacia una variable de sesión:
$_SESSION['variables_form']=$_POST;
// y redireccionas sin más .. Las variables ya están en una sesión.
header("Location: nosedonde.tal");
En tu formulario (ahora .php por si no lo era) .. tendrás que ver si existe esa variable de sesión. Si existe significa que llegas ahí por un error ..
Código PHP:
<?
session_start();
if (isset($_SESSION['variables_form'])){
echo "Hay errores ... babalbalbla";
$variables=$_SESSION['variables_form'];
}
?
Y donde requieras pre-establecer el valor original de ese campo del formulario:
<input type="text" name="nose" values="<? echo $variables['nose'] ?>">
Un saludo,