Supongamos que tenemos una página donde tenemos un formulario: formulario.php
Supongamos que tenemos un script que realiza la acción pretendida del formulario: action_formulario.php
Nuestro fomulario realiza el envío de datos al action, y éste, antes de nada, valida la corrección de los datos (los valores numéricos realmente lo son, si se pide un email, éste debe ser correcto, etc.) .
Tras la validación, el action redirigirá a otra página que mostrará el resultado de la operación, pero si no ha conseguido validar los datos, redirigirá al formulario para que el usuario vuelva a completarlo de manera correcta.
En este punto hay que tener en cuenta dos cosas: conviene informar al usuario de los errores cometidos, y por supuesto hay que dejarle el formulario con los mismos datos que introdujo para no tener que completar todo de nuevo.
Así pues, para hacer esto, utilizamos variables de sesión, tanto para el mensaje al usuario, como para pasar de nuevo los valores que el usuario introdujo:
fomulario.php
<?
$postAnterior = $_SESSION["POST_ANTERIOR"];
if (isset($_SESSION["mensajeAction"])){
echo "<div>".$_SESSION["mensajeAction"]."</div>";
unset($_SESSION[”mensajeAction”]);
}
?>
<form action="action_formulario.php" method="post">
<p>
<label for="nombre">
Nombre:
<input type="text" name="importe"
value="<?=$postAnterior["importe"]?>" />
</label>
</p>
</form>
<?unset($_SESSION["POST_ANTERIOR]);?>
action_formulario.php
//Validaciones
(...)
if ($error){
$_SESSION["mensajeAction"] =
"<p>El importe debe ser...</p>";
$_SESSION["POST_ANTERIOR"]= $_POST;
header("Location: fomulario.php");
exit;
}else{
//Acciones
(...)
$_SESSION["mensajeAction"] =
"<p>Ha introducido correctamente los datos y...</p>";
header("Location: paginaPrincipal.php");
exit;
}
No hay comentarios:
Publicar un comentario