La rutina de validación seria tipo:
procesa.php
Código PHP:
<?
// validaciones
//si hay error
header ("Location: formulario.php?codigo=1");
exit;
// Y lo mismo deberías hacer cuando termines el proceso que tengas que hacer si todo fué bien .. Redireccionar hacia otro script/página .. nunca quedarte en el script/proceso, por qué .. una recarga de página ocasionaría que nuevamente se procese tu script con lo que ello conllevaría según haga tu script (registros duplicados, e-mails re.enviados .. etc)
?>
Y en formulario.php (o script aparte destinado únicamente a mostrar errores) filtras tu variable de control que te llegará por GET .. en este ejemplo el "codigo" con un valor. Según su valor podrás hacerte tus if() o mejor todavía switch() o arrays (usando como indice ese valor) para mostrar el mensaje de error en consecuencia.
Por ejemplo
formulario.php
Código PHP:
<?
if (isset($_GET['codigo'])){
$mensajes[1]="Blablabla";
$mensajes[2]="Otro Blablabla";
// etc ..
// pequeña validación de código ..
if ($_GET['codigo'] > 0 && <= count($mensajes)){
echo "Mensaje: ".$mensajes{$_GET['codigo']};
} else {
echo "Error: Id código adulterado!!!";
}
}
Al volver al formulario ..notaras que habrás perdido las variables que el formulário pudiera tener .. para eso debes propagar las variables que recibes en "procesa.php" hacia formulario.php, esta propagación de variables puedes hacerlas por el URL, cookies o sesiones.
En principio .. por el URL sería cosa de añadir tus variables al URL que redireccionas:
Código PHP:
header ("Location: formulario.php?codigo=1&variable=<? echo urlencode($_POST['variable']) ?>");
// GET o POST según uses en tu method de tu formulario <form .. method=...
Y así con el resto (o bien propagar el array $_GET/$_POST que es el que contiene tus variables entero usando las técnicas que menciona esta FAQ:
http://www.forosdelweb.com/showthrea...072#post262072)
En tu formulario .. en los campos (input) tendrás que pre-establecer su valor tipo:
Código PHP:
<input name="variable" value="<? echo stripslashes($_GET['variable']) ?>">
Pero, es más óptimo para estos casos usar una variable de sesión (en las FAQ's hay un poco de documentación al respecto).
Las funciones que he usado.. si quieres ver que són o hacen puedes usar:
www.php.net/nombre_función
Un saludo,