Foros del Web » Programando para Internet » PHP »

Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Estas en el tema de Como hago para que cuando apreto F5, no me regargue el formulario de nuevo en el foro de PHP en Foros del Web. Hola gente, lo que veo, es que cuando ingreso un formulario, y recargo la pagina, se me ingresan los datos de nuevo, (claro en el ...
  #1 (permalink)  
Antiguo 14/05/2009, 13:11
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Pregunta Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Hola gente, lo que veo, es que cuando ingreso un formulario, y recargo la pagina, se me ingresan los datos de nuevo, (claro en el caso de un form de altas).

Como se puede hacer para que las variables que tomo por $_POST , que supuestamente quedan por ahi, se eliminen ... y cuando haga un F5 o actualizar pagina no se tomen ...

Gracias, Ricardo !!!
__________________
Mail: [email protected]
  #2 (permalink)  
Antiguo 14/05/2009, 13:57
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: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Haces un header() al final de tu proceso para redirigir a otra pagina (o a la misma pagina) eso evita que se queden en cache los datos de POST y no pasa nada si usan F5.

Saludos.
  #3 (permalink)  
Antiguo 14/05/2009, 14:40
Avatar de Abrahamsas  
Fecha de Ingreso: abril-2009
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 15 años
Puntos: 2
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Código PHP:
<?php
@$boton $_POST['enviar'];
if(
$boton == TRUE)<br />

    echo 
"Aca el INSERT a la base de datos"
    
header("Location: index.php"); // Cuando termines de insertar los datos te redirecciona a otra pagina

}
else
header("Location: registro.php"); }

?>
En donde "enviar" seria el nombre del boton que envia el formulario
Entonces si ya lo enviaron da TRUE pero si ingresan directamente a la pagina en donde se hace este proceso, es redireccionado a la pagina de registro (registro.php)
  #4 (permalink)  
Antiguo 15/05/2009, 04:25
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Hola gracias por responder !!!
Les cuento que en ambos casos me da este warning :

Warning: Cannot modify header information - headers already sent by (output started at /var/www/gestion/alta_ped_pre.php:3) in /var/www/gestion/alta_ped_pre.php on line 126
__________________
Mail: [email protected]
  #5 (permalink)  
Antiguo 15/05/2009, 04:35
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 1 mes
Puntos: 14
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Tienes que hacer la redirección antes de escribir nada en pantalla.
  #6 (permalink)  
Antiguo 15/05/2009, 04:53
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Les cuento como lo estoy haciendo, por ahi lo estoy mal ...
Código PHP:
//inicio session ...

if(isset($_POST['ok'])){

// aca hago los insert en las bdd

//y aca puse el header segun lo que entendi
header("location:alta_ped_pre.php");
}

<
html>
<
form>
// aca mi formulario !!!!
</form>
</
html
Saludos
__________________
Mail: [email protected]
  #7 (permalink)  
Antiguo 15/05/2009, 04:54
 
Fecha de Ingreso: febrero-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Otra forma de hacerlo, que es la que yo utilizo y es la que mas me gusta, y no te dará el problema Warning: Cannot modify header information, es con un window.location de javascript:

Código PHP:
<?php

if ($_SERVER['REQUEST_METHOD']=="POST") {
     
//Todas las operacion e inserciones.
    
    
?><script>window.location = '<?=$_SERVER['PHP_SELF'?>';</script><?
}
?>
Espero te sirva de ayuda.

Saludos.

Última edición por edualven; 15/05/2009 a las 05:03
  #8 (permalink)  
Antiguo 15/05/2009, 05:03
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Cita:
Iniciado por edualven Ver Mensaje
Otra forma de hacerlo, que es la que yo utilizo y es la que mas me gusta, y no te dará el problema Warning: Cannot modify header information, es con un window.location de javascript:

Código PHP:
<?php

if ($_SERVER['REQUEST_METHOD']=="POST") {
     
//Todas las operacion e inserciones.
    
    
?><script>window.location = '<?=$_SERVER['PHP_SELF'?>'</script><?
}
?>
Espero te sirva de ayuda.

Saludos.
Ahi le corregi una comilla que le faltaba

Pero funciono, es eso lo que queria ...
Ahora te pregunto, ese necesario hacer ese if ?? o puedo ponerlo solo esto
Código PHP:
?><script>window.location = '<?=$_SERVER['PHP_SELF'?>'</script><?php
despues de mis inserts ?

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #9 (permalink)  
Antiguo 15/05/2009, 05:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Ese if es para comprobar que viene un POST, con tu comprobación que haces al enviar el formulario sería suficiente... así que viendo tu código haciendo esto sería suficiente:

Código PHP:
<?php
//inicio session ... 

if(isset($_POST['ok'])){ 

    
// aca hago los insert en las bdd
   
?><script>window.location = '<?=$_SERVER['PHP_SELF'?>';</script><?

}
?>
  #10 (permalink)  
Antiguo 15/05/2009, 05:15
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Bien, ya lo probe, anda joya !!!

Pero ahora veo que despues de los inserts tenia una echo que decia echo "guardado";

Y se ve un seg y como que recarga la pagina y desaparece , jejejje !!!
Se puede hacer que ese echo quede en pantalla ?

El echo lo puse debajo del window.location ...

Saludos !!!
__________________
Mail: [email protected]
  #11 (permalink)  
Antiguo 15/05/2009, 05:29
 
Fecha de Ingreso: febrero-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Si, has de pasar una vble por get cuando haces el window.location:

Código PHP:
<?php 
//inicio session ...  

if(isset($_POST['ok'])){  

    
// aca hago los insert en las bdd 
   
?><script>window.location = '<?=$_SERVER['PHP_SELF'?>?op=ok';</script><? 


?>
Luego en el html haces algo como:

Código PHP:
<?php
if ($_GET['op']=="ok") { 
    
?><div>Guardado</div><?
}
else {
    
?><div>Ha habido un error durante la operación</div><?

?>
  #12 (permalink)  
Antiguo 15/05/2009, 06:41
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Como hago para que cuando apreto F5, no me regargue el formulario de nuevo

Lo del Codigo HTML no tuvo exito, pero la hice corta, le mande un alert("GUARDADO"); , el operador tiene que apretar una vez mas en Enter para sacar el mensaje, pero bue !!!

Saludos, y Gracias !!!
__________________
Mail: [email protected]
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 06:18.