Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Evitar que el navegador solicite reenvío de formulario

Estas en el tema de Evitar que el navegador solicite reenvío de formulario en el foro de PHP en Foros del Web. Hola, Llevo varios días con un problema que no consigo resolver, es lo siguiente: En un sistema de acceso con usuario y clave, una vez ...
  #1 (permalink)  
Antiguo 08/11/2015, 13:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Evitar que el navegador solicite reenvío de formulario

Hola,

Llevo varios días con un problema que no consigo resolver, es lo siguiente:

En un sistema de acceso con usuario y clave, una vez accedido está todo bien, pero si desde la página que recibe el formulario van a una opción del menú y después dan al botón de retroceder del navegador, este pide confirmar el reenvío del formulario y el cliente me exige que esto no sea así puesto que en otros muchos sitios funciona como él dice (y esto también lo sé yo, aunque no recuerdo los sitios).

El sistema es muy simple, un formulario con el action al archivo que recibe los datos, este tiene un include que se encarga de las validaciones y si es correcto, se mantiene, si no, devuelve a la página del formulario con el código de error correspondiente.

Ahora he conseguido que si intentan ir al formulario y ya han iniciado sesión, se redirige a la página de sesión iniciada, con esto:

index.php

Código PHP:
Ver original
  1. if ( isset($_SESSION['usuario']) && !empty($_SESSION['usuario']) && isset($_SESSION['clave']) && !empty($_SESSION['clave']) ) {
  2. header("Location: inicio.php");
  3. }

inicio.php

Código PHP:
Ver original
  1. //Aquí hay mucho código que no viene al caso, entre otras cosas
  2. //los includes de los archivos de configuración y autentificación
  3. //Por no llenar el post de código...
  4.  
  5. require_once (DIR ."encabezado.php");
  6.  
  7. // Mostrar error de Autentificación.
  8. include_once (DIR."errores.inc.php");
  9.  
  10. if (isset($_GET['error_login'])){
  11. $error=$_GET['error_login'];
  12. echo "<p class='avisonorm centro'>Error: $error_login_ms[$error]</p>";
  13. }
  14.  
  15. include_once ( 'pg/inicio.php' ); //Mostramos el contenido de la página
  16.  
  17. require_once (DIR ."pie.php"); // incluir pie de página.

Bueno, entonces, la pregunta es ¿cómo puedo hacer para que, una vez logueado, si el usuario va a hacia atrás con el botón del navegador, no le aparezca la solicitud para confirmar el reenvío del formulario? Es que no sé si me he bloqueado o qué pasa, pero no se me ocurre por dónde tirar..

Espero que alguien pueda ayudarme... Gracias
  #2 (permalink)  
Antiguo 08/11/2015, 15:45
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años
Puntos: 19
Respuesta: Evitar que el navegador solicite reenvío de formulario

Se me ocurre que, por ejemplo, antes de mostrar el login compruebes si el usuario ya está logueado, si lo está redireccionalo a donde debería estar, si no muestra el login. Creo que eso evitaría que se envíe de nuevo.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #3 (permalink)  
Antiguo 08/11/2015, 16:23
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Evitar que el navegador solicite reenvío de formulario

Hola AlejandraLara,

Muchas gracias por responder, eso es lo que hago en el archivo index.php:

Código PHP:
Ver original
  1. if ( isset($_SESSION['usuario']) && !empty($_SESSION['usuario']) && isset($_SESSION['clave']) && !empty($_SESSION['clave']) ) {
  2.     header("Location: inicio.php");
  3.     exit;
  4.     }

Pero en inicio, que es donde se procesa, no se me ocurre cómo hacerlo, ya que si uso lo mismo, se convierte en una redirección infinita, ¿alguna idea?
  #4 (permalink)  
Antiguo 08/11/2015, 17:26
 
Fecha de Ingreso: enero-2015
Ubicación: Cordoba, Andalucía
Mensajes: 111
Antigüedad: 9 años, 10 meses
Puntos: 15
Respuesta: Evitar que el navegador solicite reenvío de formulario

https://sauaslp.wordpress.com/2010/1...l-boton-atras/
  #5 (permalink)  
Antiguo 08/11/2015, 17:51
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 9 años
Puntos: 19
Respuesta: Evitar que el navegador solicite reenvío de formulario

Que raro, justo estoy trabajando en un script de clasificados y si funciona.

Mira, esta es la página de login : http://pastebin.com/zDULFWSL
Al dar "Atrás" me redireccionó sin la solicitud, quizá sea la manera de colocar isset y !empty.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #6 (permalink)  
Antiguo 09/11/2015, 01:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Evitar que el navegador solicite reenvío de formulario

Hola a tod@s,

Muchas gracias AlejandraLara y MrGilbertMan.

Al final lo he resuelto colocando un archivo intermedio que procese el login y redireccione con header ("location: inicio.php") según convenga.

Gracias a vuestras aportaciones he podido pensar y resolver el problema.

Etiquetas: formulario, impedir, reenvio, solicitud
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.