Foros del Web » Programando para Internet » PHP »

Al refrescar pantalla con F5 se vuelve a ejecutar...

Estas en el tema de Al refrescar pantalla con F5 se vuelve a ejecutar... en el foro de PHP en Foros del Web. Hola a todos: Tengo un formulario que utilizo para enviar un mail. El usuario escribe lo que sea y pulsa al botón de envío. A ...
  #1 (permalink)  
Antiguo 01/07/2004, 12:27
 
Fecha de Ingreso: marzo-2003
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Al refrescar pantalla con F5 se vuelve a ejecutar...

Hola a todos:

Tengo un formulario que utilizo para enviar un mail. El usuario escribe lo que sea y pulsa al botón de envío.
A continuacion, me envío un mail a mí mismo avisandome de que alguien ha escrito un mensaje, e inserto el mensaje en mysql, despues de hacer esto, muestro una pantalla agradeciendo la colaboracion y un boton para volver a la pagina principal.

El problema es que si estando en esta ultima pantalla, el usuario pulsa F5 y refresca, el mail vuelve a enviarse y se vuelve a ingresar un nuevo registro en mysql. Asi tantas veces como veces se refresque pantalla.

He probado a poner lo siguiente:

Código PHP:
if ( !defined('MENSAJE_ENVIADO') )
{
//Aqui envio el mensaje
//Aqui lo ingreso en mysql
define('MENSAJE_ENVIADO'1);

Pero no me funciona.

¿Alguna sugerencia?
Gracias por adelantado.
  #2 (permalink)  
Antiguo 01/07/2004, 12:37
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 13 años, 10 meses
Puntos: 0
y si usas javascript para bloquear el teclado, o esa tecla ????
creo que en las FAQs de Javascript está ja forma de hacerlo
  #3 (permalink)  
Antiguo 01/07/2004, 14:08
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Lo que puedes hacer es mostrar la página de agradecimiento separada de donde mandas el email y si ningún tipo de código php.
es decir, después de mandar el mail haces un header("Location: paginagracias.html");
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #4 (permalink)  
Antiguo 01/07/2004, 14:20
Avatar de numbloq  
Fecha de Ingreso: marzo-2004
Ubicación: Capital Federal
Mensajes: 124
Antigüedad: 13 años, 9 meses
Puntos: 0
o puedes guardar en una variable de sesion una bandera boolean que sea false si no mandó y true si lo mando, y despues con un if preguntas si ya se mandó y no lo vuelves a mandar.(creo que es mas simple que jugar con JS, aunque es mas facil lo que propone el señor living)
__________________
que el erlenmeyer carezca de tapa no es un problema que me aconte
  #5 (permalink)  
Antiguo 01/07/2004, 17:27
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 16 años
Puntos: 1
-> formulario de captura -> SQL mail header -> gracias httprefrsh -> index.php

y si tratas asi?
__________________
Usuario Registrado de linux #374849
  #6 (permalink)  
Antiguo 01/07/2004, 18:07
 
Fecha de Ingreso: marzo-2003
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Gracias por las respuestas:
yeta... podria usar javascript, pero no me convence el bloquear teclas con un lenguaje cliente y mas aun cuando hay variaciones de un navegador a otro.
Creo que lo mejor que puedo hacer es utilizar una variable de sesion, es verdad, no habia caido.
sir notos, no te he entendido muy bien. Te refieres a una pantalla de agradecimiento que a los... por ejemplo, 2 segundos, se autoreenvie a index.php?
Si es asi ya lo habia pensado, pero aun con todo el usuario sigue teniendo 2 segundos para pulsar F5.

De nuevo, gracias.
  #7 (permalink)  
Antiguo 01/07/2004, 18:19
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Cita:
Iniciado por nogmo
Te refieres a una pantalla de agradecimiento que a los... por ejemplo, 2 segundos, se autoreenvie a index.php?
Si es asi ya lo habia pensado, pero aun con todo el usuario sigue teniendo 2 segundos para pulsar F5.
Parece que no entendiste bien.
1.)Formulario con action="enviar.php".
2.)Script "enviar.php" que únicamente envía el mail. Sin nada de HTML ni "echos". Al final del script haces la redirección al script "gracias.php" con header("Location: gracias.php");
3.)Listo, nada más...

Esto es lo mismo que ya te habían puesto antes.

Saludos
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 17:13.