Foros del Web » Programando para Internet » PHP »

¿Puedo borrar de alguna manera $_POST?

Estas en el tema de ¿Puedo borrar de alguna manera $_POST? en el foro de PHP en Foros del Web. Hola: Tengo una página que muestra un artículo y al final un formulario para añadir comentarios. Cuando se añade el comentario y se pulsa el ...
  #1 (permalink)  
Antiguo 12/02/2007, 23:15
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
¿Puedo borrar de alguna manera $_POST?

Hola:

Tengo una página que muestra un artículo y al final un formulario para añadir comentarios. Cuando se añade el comentario y se pulsa el boton submit, la peticion se envia a la misma pagina. Esta, al principio, recoge $_POST['comentario'] y lo inserta en base de datos, luego muestra el artículo y todos los comentarios.

Hasta aquí todo va bien. El problema es si después de haber enviado e insertado el comentario, el usuario le da al botón de recargar del navegador. Se vuelve a enviar el comentario y se inserta por segunda vez en base de datos.

¿Se puede borrar de alguna manera $_POST['comentario'] después de haberlo insertado? ¿Hay alguna forma de detectar desde php si se debe a recargar página? ¿Alguna otra solución?

Gracias y sed buenos.
__________________
Apuntes Java
Wiki de Programación
  #2 (permalink)  
Antiguo 13/02/2007, 02:36
Avatar de yesik  
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 292
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: ¿Puedo borrar de alguna manera $_POST?

con
unset($_POST['comentario']);
una vez que la insertas se borra la declaracion de la variable... Supongo q te servira... Salu2
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
  #3 (permalink)  
Antiguo 13/02/2007, 02:53
 
Fecha de Ingreso: diciembre-2002
Ubicación: bilbao
Mensajes: 345
Antigüedad: 21 años, 4 meses
Puntos: 3
Re: ¿Puedo borrar de alguna manera $_POST?

no se si eso te servirá, por que se ejecuta el script de nuevo y tendrías que comprobar mil movidas, lo que yo haria seria una tabla de IPS, que compruebe que el usuario no ha enviado ese comentario en menos de ... 5 minutos por ejemplo.

Un saludo.

Otra opción es que pidas que meta el tipico numero de validación.
__________________
aste nagusia
  #4 (permalink)  
Antiguo 13/02/2007, 03:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: ¿Puedo borrar de alguna manera $_POST?

Hola:

Lo de unset() no funciona, supongo que el navegador tiene almacenados los valores de $_POST y los vuelve a poner al recargar página, aunque el formulario esté vacio después de haber hecho la inserción en bd del comentario. Supongo que de igual manera pasará con el numero de validación.

Lo de la IP es una opción y la usaré si no queda más remedio, aunque no me gustaría tener que crear una tabla/columna sólo para eso.

¿Alguna otra solución?

Gracias y sed buenos.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 13/02/2007, 05:44
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Re: ¿Puedo borrar de alguna manera $_POST?

hola,
Cita:
Iniciado por chuidiang Ver Mensaje
Hola:
Lo de unset() no funciona, supongo que el navegador tiene almacenados los valores de $_POST y los vuelve a poner al recargar página.
q yo sepa la variable $_POST no se 'bufferiza'

raro q no te funcione el unset...

para 'reinciar' la variable se usa siempre:
unset($_POST['comentarios']); o bien $_POST = array;
sino estoy equivocado...

luego haces la comprobacion d si $_POST es nulo q no lo inserte..

prueba a ver q tal...

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #6 (permalink)  
Antiguo 13/02/2007, 06:21
Avatar de yesik  
Fecha de Ingreso: octubre-2004
Ubicación: Orense
Mensajes: 292
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: ¿Puedo borrar de alguna manera $_POST?

claro q no se bufferiza ..
entonces la comprobacion q tendras q hacer es:

if(!isset($_POST['comentarios']))
__________________
Inmuebles de Galicia:: www.inmueblevirtual.net
Compartir piso Galicia:: www.inmueblevirtual.net/foro
  #7 (permalink)  
Antiguo 13/02/2007, 07:43
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: ¿Puedo borrar de alguna manera $_POST?

Hola:

Si hago unset() y miro después, efectivamente está vacía.

Sin embargo, si le doy a recargar página en el navegador, cuando entra a ejecutarse el código php, _POST vuelve a tener su valor. Por eso pienso que el navegador, igual que tiene la url de la página, tiene los valores de _GET y _POST que ha recibido esa pagina, para enviárselos de nuevo si se pulsa "recargar página". Si no fuera así, las páginas php no podrían recargarse bien.

El caso es que si doy recargar al navegador, la pagina php vuelve a tener integros los valores de _POST.

La solución que me han propuesto por ahí es que trate los datos justo al principio de la pagina, sin sacar nada por el navegador y luego llame a header() para redirigir a mi misma pagina, pero ya con _POST vacio. Probaré a ver qué tal.

Sed buenos.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 13/02/2007 a las 07:49
  #8 (permalink)  
Antiguo 13/02/2007, 07:56
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: ¿Puedo borrar de alguna manera $_POST?

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Lo de unset() no funciona, supongo que el navegador tiene almacenados los valores de $_POST y los vuelve a poner al recargar página, aunque el formulario esté vacio después de haber hecho la inserción en bd del comentario. Supongo que de igual manera pasará con el numero de validación.

Lo de la IP es una opción y la usaré si no queda más remedio, aunque no me gustaría tener que crear una tabla/columna sólo para eso.

¿Alguna otra solución?

Gracias y sed buenos.
No es muy complicado, solo agrega dos columnas mas a tu tabla de comentarios, una que almacene la IP y la otra la hora (ojala mejor en timestam), entonces antes de insertar registro, verifica que no existan registro de la misma ip y la hora (actual menos 5 minutos), si no hay registros, se inserta, si hay , no se inserta

:P
  #9 (permalink)  
Antiguo 13/02/2007, 08:44
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: ¿Puedo borrar de alguna manera $_POST?

lo que tenes que hacer es sacar a la variable que deseas del arreglo post.
  #10 (permalink)  
Antiguo 13/02/2007, 09:54
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: ¿Puedo borrar de alguna manera $_POST?

es mucho ma sfacil, crea una variable de sesion el problema no esta con el arreglo _POST sino que al recargarse el envia la postdata como si del formulario se tratase, en el primer adicionamiento de comentarios crea una variable de sesion como bandera de que ya se añadio un comentario, asi recarge de nuevo miras si la variable de sesion existe y si es asi no insertas la data que viene via POST
  #11 (permalink)  
Antiguo 13/02/2007, 11:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: ¿Puedo borrar de alguna manera $_POST?

Hola:

Anotado lo de la variable de sesión, haré alguna prueba. Gracias.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #12 (permalink)  
Antiguo 13/02/2007, 13:12
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Re: ¿Puedo borrar de alguna manera $_POST?

Totalmente de acuerdo con sergi_climent, el $_POST es un arreglo y nada mas que eso.. para borrar todo lo que esta contenido en el basta con setear $_POST = array();

Cita:
Iniciado por sergi_climent Ver Mensaje
hola,


q yo sepa la variable $_POST no se 'bufferiza'

raro q no te funcione el unset...

para 'reinciar' la variable se usa siempre:
unset($_POST['comentarios']); o bien $_POST = array;
sino estoy equivocado...
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




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