Problema con formularios y php
Buenas, tengo un problema.
Tengo un formulario el qual envia los datos a la misma pagina, el problema vienen cuando se refresca la pagina (ya sea con el boton del navegador o con F5) ya que se repite la acción, como si se volviera a clicar en el boton de enviar... Hay alguna manera de solucionarlo?
Muchas gracias
Tengo un formulario el qual envia los datos a la misma pagina, el problema vienen cuando se refresca la pagina (ya sea con el boton del navegador o con F5) ya que se repite la acción, como si se volviera a clicar en el boton de enviar... Hay alguna manera de solucionarlo?
Muchas gracias
Para solventar lo que tu dices hay una solución efectiva , esta claro que la persona que te respondio esta tambien en lo cierto pero para problema plantearia una unica solución que es la del redireccionamiento , con lo cual la persona envia el formulario y cuando se envia el email se redirecciona a la misma pagina pero con la informacion de inicio es decir nada , con el formulario nuevamente vacio , de esta forma se evita el reenvio constante de emails dandole al refresco , otra solucion seria uns instancia exit (); que desvinculase el formulario de envio pero todo dentro de la misma pagina , si supones que pones un campo oculto que es el que dispara la accion del formulario , pra le primer caso de la redireccion ocurriria esto
if ($action=="ok)
{
//se envia el mail por php aqu meteria el envio del mail y con la función de abajo se redirecciona a la supuesta pagina de formulario de envio que llamremos box.php///
header("Location: box.php");
}
else {}
De esta forma el formulario envia tu correo yal mismo tiempo redirecciona si a la instancia de redireccion le metes al final en vez de solo box.php , le pones box.php?action=enviado y en la pagina del formulario
<?
if ($action=="enviado")
{print "Enhorabuean tu mensaje ha sido enviado";}
?>
con lo cual obtendria lapersona que te escribe por un lado la redirección sin problemas de repeticion del envio y por otro la capacidad de informar al usuario de que el envio ha sido realizado
Por ultimo la instancia exit lo que haria es bloquear la pagina despues del envio
<?
if ($action=="ok")
{
///Envio de mail por php
exit (print "correo enviado correctamente , <a href=box.php>volver al Formulario</a>");
}
else {}
estas dos formas te permitiran evitar el reenvio otras mas complicadas podrian ser la restriccion or la ip a un numero determinado de envios por dia para una misma ip identificada pero nos meteriamos en mas complicaciones de bases de datos que para lo que es no compensa en abosluto , pero si piensas que hay un spammer dandote la lata puedes incorporar un avisador para saber la ip del que escribe recibiendo estos datos en tu correo y avisandote de que te escriben es muy util , simplemente has de añadir otra funcion de envio de email al tuyo con eltitulo de nuevo email enviado y asociando la funcion $REMOTE_ADDR para saber la ip de la persona en cuestión , saludso buena suerte , chau , WebMasterFrank
?>
if ($action=="ok)
{
//se envia el mail por php aqu meteria el envio del mail y con la función de abajo se redirecciona a la supuesta pagina de formulario de envio que llamremos box.php///
header("Location: box.php");
}
else {}
De esta forma el formulario envia tu correo yal mismo tiempo redirecciona si a la instancia de redireccion le metes al final en vez de solo box.php , le pones box.php?action=enviado y en la pagina del formulario
<?
if ($action=="enviado")
{print "Enhorabuean tu mensaje ha sido enviado";}
?>
con lo cual obtendria lapersona que te escribe por un lado la redirección sin problemas de repeticion del envio y por otro la capacidad de informar al usuario de que el envio ha sido realizado
Por ultimo la instancia exit lo que haria es bloquear la pagina despues del envio
<?
if ($action=="ok")
{
///Envio de mail por php
exit (print "correo enviado correctamente , <a href=box.php>volver al Formulario</a>");
}
else {}
estas dos formas te permitiran evitar el reenvio otras mas complicadas podrian ser la restriccion or la ip a un numero determinado de envios por dia para una misma ip identificada pero nos meteriamos en mas complicaciones de bases de datos que para lo que es no compensa en abosluto , pero si piensas que hay un spammer dandote la lata puedes incorporar un avisador para saber la ip del que escribe recibiendo estos datos en tu correo y avisandote de que te escriben es muy util , simplemente has de añadir otra funcion de envio de email al tuyo con eltitulo de nuevo email enviado y asociando la funcion $REMOTE_ADDR para saber la ip de la persona en cuestión , saludso buena suerte , chau , WebMasterFrank
?>