Foros del Web » Programando para Internet » PHP »

Evitar que pulsen atrás

Estas en el tema de Evitar que pulsen atrás en el foro de PHP en Foros del Web. Hola a todos. Os cuento mi problema. Tengo una página de votos. En esta página, tú le asignas un número de votos a una foto ...
  #1 (permalink)  
Antiguo 06/12/2004, 06:31
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Evitar que pulsen atrás

Hola a todos. Os cuento mi problema. Tengo una página de votos. En esta página, tú le asignas un número de votos a una foto que ya has elegido, y le das al botón "Votar". Esto lleva a un php que guarda el voto, y este php redirecciona a una tercera página. Pues bien, si desde esta tercera página le dan al botón "Atrás" del navegador (cosa que hace demasiada gente), se vuelven a guardar los puntos, de modo que habiendo votado una vez, se guarda el doble de puntos (y si le siguen dando al botoncito, ni os cuento).

¿Alguien sabe cómo puedo evitar esto?

Gracias por adelantado.

Mario.
  #2 (permalink)  
Antiguo 06/12/2004, 06:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. no se trata de evitar que pulsen el botón atras .. sino en detectar esa situación.

En principio .. para solventar el problema .. tu script de proceso del voto (el que lo registra en tu BD o donde sea) tendría que estar separado del código que da tu presentación a esos datos o muestra un mensaje tipo "su voto fué registrado" o algún otro error.

Para eso, debes redireccionar tras el voto a otra página donde si lo deseas muestras tu mensaje de error/exito o bien a otro sitio. Así .. si tu "vuelves" atras con tu navegador a donde vás es a tu página del mensaje y no al script del proceso PHP de registro del voto.

Ejemplo del procedimiento:

voto.php
Código PHP:
<?
// registro del voto

// al finalizar: 
header("Location: mensaje.php");  // o "ver_votos.php" o como sea donde los muestres
exit;
?>
Al usar "header("location ...") estarás redireccionando .. así que ese script de registro del voto NO tiene que tener nada de HTML como salida ni un echo "algo" ni otro tipo de salida pues .. se trata de "registrar" el voto. Si tienes mensajes que mostrar ..hazalos en la página que redirecciones. Puedes usar una variable que propagar por el URL a la página que redireccionas tipo:

header ("Location: mensajes.php?mensaje_codigo=1");

Un saludo,

Un saludo,
  #3 (permalink)  
Antiguo 06/12/2004, 07:49
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Creía que header("Location:...") era una redirección equivalente al document.location de javascript, pero veo que no. Me sirve totalmente para mis propósitos.

Muchas gracias, Cluster.

Mario.
  #4 (permalink)  
Antiguo 06/12/2004, 08:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. es lo mismo que "document.location" .. pero la versión "javascript" de "location" tienes que esperar que toda la página llegue al cliente para que esta la interprete (y en consecuencia también quedará en cachés de navegadores y demás).

La diferencia la usar "header()" de PHP es que esa cabecera se envia como parte de la petición "HTTP" al cliente y se ejecuta -antes- de que todo el resto de código HTML/Jascript/etc se pueda llegar a interpretar.

Un saludo,
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:15.