Foros del Web » Programando para Internet » PHP »

al actualizar evitar reenviar fomulario

Estas en el tema de al actualizar evitar reenviar fomulario en el foro de PHP en Foros del Web. Buenas, Mi pagina de contacto es algo parecido a esto: Código PHP: <?php  if (! $_POST ){ ?> <form action="(se llama ella misma)"... <form/> <?php  }else{ echo  "enviado" ; $_POST  ...
  #1 (permalink)  
Antiguo 14/01/2011, 09:50
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 9 meses
Puntos: 0
al actualizar evitar reenviar fomulario

Buenas,

Mi pagina de contacto es algo parecido a esto:

Código PHP:
<?php if (!$_POST){?>
<form action="(se llama ella misma)"...


<form/>

<?php }else{

echo 
"enviado";

$_POST NULL;
}
?>

Al clickar submit muestra "enviado", pero si refrescas la pagina vuelve a mostrar "enviado" y yo necesito que vuelva a mostrar el formulario.

S2 y gracias de antemano
  #2 (permalink)  
Antiguo 14/01/2011, 10:21
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: al actualizar evitar reenviar fomulario

Hola naitmeir, la unica forma de vaciar $_POSt es haciendo un header("location:"), yo lo intente usando isset pero no funciona.

Saludos
  #3 (permalink)  
Antiguo 14/01/2011, 10:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: al actualizar evitar reenviar fomulario

Eso es debido a que $_POST es llenada por el browser, y aunque la asignes a null, los datos siguen en el cache del navegador y los va a volver a enviar siempre que se pulse F5.

Saludos.
  #4 (permalink)  
Antiguo 14/01/2011, 13:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 4 meses
Puntos: 25
Respuesta: al actualizar evitar reenviar fomulario

prueba action="lapagina.formato?click" algo parecido y entonces comprueba despues se el $_POST esta vacio en caso contrario llama a la function
  #5 (permalink)  
Antiguo 14/01/2011, 13:48
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 22 años, 11 meses
Puntos: 39
Respuesta: al actualizar evitar reenviar fomulario

Intenta con::



unset($_POST);


Creoq ue si borra todo el contenido lei en un otro foro..
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #6 (permalink)  
Antiguo 14/01/2011, 14:01
Avatar de j_silk_h  
Fecha de Ingreso: julio-2010
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: al actualizar evitar reenviar fomulario

hermano, la verdad yo tengo un método infalible para eso: es el siguiente...

<?php

extract($_post);

if($accion == "guardar"){
// tus sql de almacenamiento aquí y etc
echo "guardando";
unset($accion);
}

?>

<form>
<input type="text" />
<input type="submit" value="guardar" name="accion" />
</form>


etc, etc.

básicamente evalúas la accion, si la accion es "guardar" entonces tomas todos los datos del formulario y limpias solo a la variable "accion" con el unset($accion); y si refrescas el evalua la variable accion y como esta vacía gracias al unset, no reenvía el formulario


el extract($_post); no creo que tenga que explicartelo pero lo hare por si acaso, la funcion extract(); crea variables según los nombres de los campos del formulario, en lugar de ser:

$accion = $_post('accion');

haces un extract y el ya crea el $accion, asi de simple
  #7 (permalink)  
Antiguo 14/01/2011, 14:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: al actualizar evitar reenviar fomulario

Si haces unset de $_POST, de $action... o de lo que quieras... al actualizar la pagina en el navegador vuelve a enviar los datos, ya que esta se genero al procesar un formulario.

Por tanto... opciones viables:
1- Redireccion
2- Crear una variable de sesion para comprobar hace cuanto fue enviado el formulario y no procesarlo nuevamente si no ha pasado cierto tiempo... que se yo!
3- Unset de variables... que por cierto no funciona.
4- Agrega lo que quieras... sigue siendo mejor opcion la #1
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 26/01/2011, 13:36
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: al actualizar evitar reenviar fomulario

Hola, yo tengo el mismo problema ¿Cómo redireccionais con header? A mí no me deja, porque tengo que declarar antes variables, por lo menos $_POST['submit'] ¿no?
  #9 (permalink)  
Antiguo 26/01/2011, 15:09
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: al actualizar evitar reenviar fomulario

http://php.net/manual/es/function.header.php
  #10 (permalink)  
Antiguo 31/01/2011, 13:20
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: al actualizar evitar reenviar fomulario

Sí, gracias. Ya sé cómo se utiliza normalmente la opción header para redireccionar.
Lo que yo quiero decir es que en este caso concreto, como se trata de un formulario, no hay más remedio que declarar antes de todo si se ha pulsado el botón "submit". Y claro, si envías esa información, ya no funciona header.
  #11 (permalink)  
Antiguo 31/01/2011, 13:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 19 años, 1 mes
Puntos: 2
Respuesta: al actualizar evitar reenviar fomulario

Algunas veces no te funciona el header porque haz impreso algo en pantalla, ese puede ser el error.
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
  #12 (permalink)  
Antiguo 31/01/2011, 17:59
 
Fecha de Ingreso: julio-2010
Mensajes: 28
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: al actualizar evitar reenviar fomulario

has algo tipo

<?php
if (isset($_POST['enviar'])){
/* tu codigo para enviar cambios */
header("location: mismapagina.php?resultado=enviado");
}
?>

todo esto hasta arriba, y ahora donde antes hacias el envio en vez de revisar las variables post revisas $_GET['resultado'] y ya muestras si se envio o no para informar al usuario que el envio fue exitoso.

esto si quieres usar un solo archivo, si usas otro que solo haga el envio y redirija sería algo parecido.
  #13 (permalink)  
Antiguo 31/01/2011, 18:41
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 10 meses
Puntos: 12
Respuesta: al actualizar evitar reenviar fomulario

si tienes error con el header "tipico" usa ob_start y ob_flush

http://php.net/manual/en/function.ob-start.php

http://php.net/manual/en/function.ob-flush.php
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #14 (permalink)  
Antiguo 02/02/2011, 10:57
Avatar de rocio01  
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: al actualizar evitar reenviar fomulario

Gracias. Voy a probar estas opciones.
  #15 (permalink)  
Antiguo 17/02/2015, 17:40
 
Fecha de Ingreso: febrero-2015
Mensajes: 1
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: al actualizar evitar reenviar fomulario

Mxrck Algo parecido a tu respuesta, pero no hay necesidad de utilizar el metodo GET, simplemente hacer una redirección y listo de esa forma se borran los datos almacenados por el método POST.

Sería algo como esto:

header("location: pagina.php");

donde página es la mísma página que envía la información a la base de datos...

Etiquetas: actualizar, refrescar, 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 11:38.