Foros del Web » Programando para Internet » PHP »

Formulario se reenvia al presionar F5 : PHP

Estas en el tema de Formulario se reenvia al presionar F5 : PHP en el foro de PHP en Foros del Web. Saludos a todos, Les comento que estoy realizando una pagina la cual envia un formulario por Post y al realizar el envio se guarda en ...
  #1 (permalink)  
Antiguo 07/02/2011, 16:43
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Formulario se reenvia al presionar F5 : PHP

Saludos a todos,
Les comento que estoy realizando una pagina la cual envia un formulario por Post y al realizar el envio se guarda en la base de datos y tambien envia un correo al cliente., es como una reservacion.
Sucede que al darle refresh a la pagina, con F5 o cualquier otro metodo, se me reenvia el formulario y se duplica el registro y el correo electronico se envia de nuevo.

He probado varias formas de hacerlo para que no pase, como: enviar el formulario por get, pero total, hace lo mismo.
he puesto el codigo de insercion en otra pagina, pero total da lo mismo.

He probado con header y creo que es la mejor opcion, pero tiene un problemita, y es que funciona en mi servidor local, cuando lo subo a internet me despliega el siguiente warning.

Warning: Cannot modify header information - headers already sent by (output started at /home1/polcompu/public_html/montires/cabecera.php:10) in /home1/polcompu/public_html/montires/reservar.php on line 82

pero hace todo lo que yo quiero, osea guarda el registro y tambien se envia el correo, pudiera yo hacer esto que me funcione sin desplegar este warning, o bien configurarlo para que no me despliegue warning de ese tipo.

por favor ayudenme ahi...
muchas gracias

att.
Genaro
  #2 (permalink)  
Antiguo 07/02/2011, 17:05
pamda
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Formulario se reenvia al presionar F5 : PHP

deberias indicar por medio de un mensaje que el form se ha enviado correctamente redirijiendo a otro archivo, poniendo una opcion de enviar otro correo y asi te evitas ese inconveniente.
o una vez enviado el form, reseteas los campos.. y logicamente creo que tenes algunos campos obligatorios, entonces al presionar F5 o boton enviar te da error, justamente por los campos obligatorios.
saludos!
  #3 (permalink)  
Antiguo 07/02/2011, 17:12
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 8 meses
Puntos: 8
Respuesta: Formulario se reenvia al presionar F5 : PHP

si te sirve de algo, podrías hacerlo asi:

en el form action indicas una variable "accion=comentar" o similar. Entonces inciando tu código haces lo siguiente:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_GET['comentar'] && isset($submit)) {
  4.  
  5. Query a la base de datos;
  6.  
  7. Envias el Email;
  8.  
  9. Header('location: link actual sin la variable accion=comentar');
  10. }

Recuerda que para que el Header funcione no debe estar antecedido de ningún otro código.
  #4 (permalink)  
Antiguo 07/02/2011, 17:22
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Formulario se reenvia al presionar F5 : PHP

Yo tengo esto: y en mi servidor local funciona correctamente, pero cuando lo subo al hosting pues alli me da el siguiente error.

Warning: Cannot modify header information - headers already sent by (output started at /home1/polcompu/public_html/montires/cabecera.php:10) in /home1/polcompu/public_html/montires/reservar.php on line 82


if ($_POST)
{
$res_nombre_cliente = $_POST["txtNombreCliente"];
$res_email_cliente = $_POST["txtEmailCliente"];

reservar($res_nombre_cliente, $res_email_cliente)

mail("$remitente,$destinatario",$asunto,$cuerpodel correo,$headers);
header("location: reservar.php");

}

ahora bien, cuando dices que header no puede estar antecededido por ningun codigo, ahi como esta?... esta bien?

muchas gracias....
  #5 (permalink)  
Antiguo 07/02/2011, 17:34
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Formulario se reenvia al presionar F5 : PHP

Prueba evaluar los dos $_POST[], ya que el $_POST siempre te va a dar verdadero aunque los valores de sus miembros estén vacíos.

Código PHP:

$_POST
['valor'] = '';

$post = ($_POST) ? TRUE FALSE;

var_dump ($post); 
  #6 (permalink)  
Antiguo 01/05/2011, 14:24
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Formulario se reenvia al presionar F5 : PHP

Ya tengo la solucion., y es la siguiente:

crear tres paginas:
1 crear una que es en donde esta el formulario.
2 crear una que es la que procesa el formulario y lo guarda en la base de datos. y redirigir a una tercera pagina la cual dice que fue guardado correctamente....

3 crear una pagina de guardado correctamente.,

Gracias a Todos

Etiquetas: presionar, reenvia, formulario
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 23:01.