Foros del Web » Programando para Internet » PHP »

¿como evitar la reescritura de datos de un formulario en la BD?

Estas en el tema de ¿como evitar la reescritura de datos de un formulario en la BD? en el foro de PHP en Foros del Web. Hola. En una web recojo unos datos por formulario. Cuando los he recogido me dirigo a una página en la que confirmo al usuario que ...
  #1 (permalink)  
Antiguo 11/02/2007, 10:47
 
Fecha de Ingreso: enero-2007
Mensajes: 20
Antigüedad: 17 años, 3 meses
Puntos: 0
¿como evitar la reescritura de datos de un formulario en la BD?

Hola.
En una web recojo unos datos por formulario. Cuando los he recogido me dirigo a una página en la que confirmo al usuario que los datos han sido leidos e insertados en la BD. El problema es que si el usuario le da a RECARGAR en esa página de confirmación los datos se introducen de nuevo en la BD y así sucesivamente...

¿hay alguna forma de evitar esto???
  #2 (permalink)  
Antiguo 11/02/2007, 10:54
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Desesperado... ¿como evitar la reescritura de datos de un formulario en la BD?

Puedes hacer que una vez introducidos los datos en la BD, el usuario sea redireccionado a otra página donde le enseñes un mensaje conforme todo ha ido bien o alguna cosa así, y de esta manera el formulario quede atrás y no se pueda reenviar.

Saludos.
  #3 (permalink)  
Antiguo 12/02/2007, 02:07
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Desesperado... ¿como evitar la reescritura de datos de un formulario en la BD?

Lo otro que podrias hacer es usar algun tipo antiflood o un capcha.

Un antiflood simple es :
Que cada registro insertado tenga la hora y la ip.

Entonces antes de insertar un Registro, comprobar que no existe ningun registro con la ip igual a la ip del visitante y la hora actual del sistema menos 5 minutos.
Si existe registro no insertar nada, si no existe registro, Insertar
  #4 (permalink)  
Antiguo 12/02/2007, 02:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Re: ¿como evitar la reescritura de datos de un formulario en la BD?

Deer: Lo que tu planteas servirá para evitar alguien duplique registros o evitar el envio masivo de registros (por lo del tiempo de espera) pero el tema aquí es evitar que al recargar la página se duplique información, cosa muy aparte (puedo no querer poner las restricciones que mencionas ).

panoramio: menos drama y más busqueda que el tema se ha tratado muchas veces. La solución es tal cuál lo menciona AbdelioR: crea una página intermedia donde aísles el "proceso de guardado" y redirecciona a la página donde muestras el mensaje.

Código PHP:
if(mysql_query("INSERT INTO tabla VALUES('".$_POST['algo']."'"))
header("Location:confirmar.php?resultado=ok"); 
Una idea vaga... en temas anteriores se ampia la información.

Suerte
Edito el título.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 12/02/2007, 02:52
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: ¿como evitar la reescritura de datos de un formulario en la BD?

Cita:
Iniciado por jam1138 Ver Mensaje
Deer: Lo que tu planteas servirá para evitar alguien duplique registros o evitar el envio masivo de registros (por lo del tiempo de espera) pero el tema aquí es evitar que al recargar la página se duplique información, cosa muy aparte (puedo no querer poner las restricciones que mencionas ).
...
Por supuesto jam1138 que lo que yo planteo es para el flood, aunque no son temas muy alejados, ya que la solucion del antiflood no permite duplicacion de registro, Creo que lo mejor (para el amigo de la duda, como lo hemos dicho ya)

1.- Redirecione despues de insertar el registro
2.- Aplique algun metodo Antiflood, ya que es por un motivo de seguridad.

Asi matamos dos pajaros de un tiro :P (La duda de ahora, y talvez mas adelante llege diciendo Alguien me hizo un flood jeje)

Siempre es bueno recomendar un poquito de seguridad.

Saludos
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 09:14.