Foros del Web » Programando para Internet » PHP »

me inserta un registro vacio si le doy F5 a la pagina :(

Estas en el tema de me inserta un registro vacio si le doy F5 a la pagina :( en el foro de PHP en Foros del Web. hola, tengo una pagina para insertar articulos..pero le di F5 en un momento estando el formulario vacio y me metio en la base de datos ...
  #1 (permalink)  
Antiguo 22/07/2003, 16:21
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 2 meses
Puntos: 6
me inserta un registro vacio si le doy F5 a la pagina :(

hola, tengo una pagina para insertar articulos..pero le di F5 en un momento estando el formulario vacio y me metio en la base de datos registros vacios

como dia... arreglo eso?
__________________
www.dataautos.com
  #2 (permalink)  
Antiguo 22/07/2003, 16:31
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 21 años, 4 meses
Puntos: 0
en evz de redireccionarlo con javascript u otra ocsa le das

<?
header("Location :tupagina.php");
?>
__________________

la vida es bella cuando no es culera
  #3 (permalink)  
Antiguo 22/07/2003, 16:32
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 2 meses
Puntos: 6
a ver... (aunque no lo taba redireccionando) fue un F5 normalito
__________________
www.dataautos.com
  #4 (permalink)  
Antiguo 22/07/2003, 17:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Seguro que tienes estructurada tu pagina asi:

Codigo que inserta
Codigo que muestra algo

Si es asi, cuando refrescas con el F5, se vuelve a ejecutar todo el codigo, incluido el de insertar, con lo que acabas insertando varios registros. Dependiendo del codigo, te insertara varias veces los mismos datos o registros vacios.

La forma "segura" de hacer la insercion seria:

Si tengo que insertar
Codigo de insertar
Redirecciono a la misma pagina pero sin orden de insertar
fin si
Codigo que muestra.

La redireccion se haria con header("Location: pagina.php"); (www.php.net/header).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 22/07/2003, 21:59
Avatar de Sagat  
Fecha de Ingreso: febrero-2002
Ubicación: Viña del Mar
Mensajes: 164
Antigüedad: 22 años, 1 mes
Puntos: 0
Pasando una variable con valor 1

Yo uso un sistema mas "domestico" para que no me pase eso.
creo una pagina de insetar valores y otra de grabar valores
bueno....cuando paso de la insertar a la grabar mando una variable con valor 1, entonces en la pagina que graba pregunto.

<?
if (!$var)
{ exit; }
?>
// si es está vacía se sale, si es 1 sigue

<?
//comienza la rutina de grabar
?>

de esa manera si le hago un F5 la variable "var" tendrá 0 y se saldrá sin grabar ningun registro en blanco.

Espero que te sirva
  #6 (permalink)  
Antiguo 23/07/2003, 00:47
Avatar de MWNS  
Fecha de Ingreso: julio-2003
Mensajes: 528
Antigüedad: 20 años, 8 meses
Puntos: 2
Opino ...

que con un simple ...

Código PHP:
if ($TU-CAMPO!=""
evitarias que cuando se pulse f5 ... se ingrese el nuevo registro ...
estoy en lo correcto ? ...

sino

me corrigen ...

Un saludo ...
  #7 (permalink)  
Antiguo 23/07/2003, 01:07
 
Fecha de Ingreso: mayo-2003
Ubicación: Cuernavaca, Mor.
Mensajes: 117
Antigüedad: 20 años, 11 meses
Puntos: 2
Un Food check bastante sencillo pero efectivo:

ponemos esto antes de que haga la consulta insert:
Código PHP:
if(!$check){
    
setcookie("check","flood",time()+300);//Estos son 5 min.
    

Luego:
Código PHP:
if(!$check){
mysql_query("INSERT INTO tabla...//Haces la consulta que hace la inserción de datos
}
    else {
echo "
<scriptwindow.alert("Ya se han enviado los datos\"); location.href=\"index.php\"; </script>";//redireccionas a otra página
    

Suerte!!
  #8 (permalink)  
Antiguo 23/07/2003, 09:51
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 2 meses
Puntos: 6
VIC MX, utilice ese metodo, pero me dice esto:

Código PHP:
WarningCannot add header information headers already sent by (output started at c:program fileseasyphpwwwmssubir.php:8in c:program fileseasyphpwwwmssubir.php on line 104 

y la linea 8 es esto:

Código PHP:
if(!$check){
    
setcookie("check","flood",time()+300);//Estos son 5 min.
    

__________________
www.dataautos.com
  #9 (permalink)  
Antiguo 23/07/2003, 22:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La verdád .. no sé para que se complican ..

Una buena estructura de tu código y un redireccionamiento tipo header() que se ha comentado ya te evita infinidad de problemas y complicaciones ...

Ejemplos:

Las soluciones que usan una variable como "flag" .. si usan método "POST" en formulario .. el navegador al hacer un "F5" nos pide confirmación para enviar otra vez las variables .. (y son las de nuestro estado incial como "guardar" .. ) así que ahí no funciona correctamente ...

Las soluciones vía cookies o incluso sesiones dependen de la configuración Cliente (caso cookies -> navegador que las acepte) o del servidor (caso sesiones).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 24/07/2003, 00:36
 
Fecha de Ingreso: mayo-2003
Ubicación: Cuernavaca, Mor.
Mensajes: 117
Antigüedad: 20 años, 11 meses
Puntos: 2
Pues si tienes razon cluster, pero ya entrado en el script que le envie, le termino de ayudar:

Para que no te marque ese error debes enviar esto:
Código PHP:
if(!$check){
    
setcookie("check","flood",time()+300);//Estos son 5 min.
    

Antes de cualquier salida de html o texto, me imagino que estaras enviado un <html> y luego el codigo, checale.
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:01.