Bienvenido(a), Visitante. Favor de ingresar o registrarse.
Noviembre 21, 2008, 02:14:13
Inicio Ayuda Buscar Ingresar Registrarse
Noticias: Foro de Java, C++ y más.

Empieza una nueva comunidad de programación: Oneble ... es lo que tu quieras que sea

+  Foros Java y C/Linux
|-+  Programación Web
| |-+  PHP
| | |-+  ¿Puedo borrar de alguna manera $_POST?
« anterior próximo »
Páginas: [1] Enviar tema Imprimir
Autor Tema: ¿Puedo borrar de alguna manera $_POST?  (Leído 1545 veces)
chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email


« en: Febrero 13, 2007, 05:58:45 »

Hola:

Tengo una página php que muestra una información y al final un formulario para que los lectores puedan añadir comentarios.

Cuando se pone un comentario y se da al botón "submit", se redirige a la misma página. Esta, al principio, recoge el comentario de $_POST['comentario'] y lo inserta en base de datos. Luego se muestra el resto de la página con todos los comentarios (estilo a lo que hace cualquier blog cuando se añaden comentarios a un post).

El problema que tengo es que si después de haber insertado un comentario se da a "recargar" en el navegador, se vuelve a reenviar el $_POST['comentario'] y vuelve a insertarse repetido.

¿Hay alguna forma de borrar $_POST['comentario'] después de haberlo insertado en base de datos, de forma que si se pulsa recargar ya no tenga valor?. ¿Alguna forma de marcar que el comentario ya se ha insertado?

Sed buenos.
En línea

rfilgueiras
Jr. Member
**
Mensajes: 73


Ver Perfil WWW Email
« Respuesta #1 en: Febrero 13, 2007, 08:11:43 »

En mi opinión se pueden hacer varias cosas para que eso funcione.

Se puede comparar el mensaje con lo que hay en la base de datos y que no lo inserte si está repetido. Esto no es muy recomendable ya que si se compara con toda la base de datos tardaría un tiempo excesivo, pero si se puede comparar con los últimos mensajes, pongamos los mensajes de la última media hora, y si está repetido no se inserta.

Otra posibilidad, consiste en eliminar la variable de la request. No sé de PHP pero imagino que habrá algún método para eliminar la variable de la request. La desventaja de esto es que cuando vuelvas no podrás ver tu mensaje, sino que el cuadro de texto aparecerá en blanco, debido a que ya no existe contenido en esa variable.

Esto es lo que se me ocurre que se puede hacer.

Imagino que te refieres a los mensajes de este foro. En tal caso tendrás que modificar los ficheros del foro, por lo que cuando lo actualices, tendrás que modificarlos de nuevo. Puedes indicarles a la gente que desarrolla este foro que te parece que es un bug. Y puede que ellos le den la solución para próximas versiones.
En línea
chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email
« Respuesta #2 en: Febrero 13, 2007, 08:52:33 »

Hola:

No es por el foro, es simplemente que estoy jugando con php. Igual que en mi sitio he puesto una especie de contador en la parte final de cada artículo que me he hecho yo mismo, pretendo poner un "comenta este artículo".

Lo tengo acabado a falta de revisar el comentario para escapar las posibles comillas que se introduzcan (hay una función php que lo hace automáticamente) y quitar/revisar los tags html que se metan.

Por supuesto, también está el problemilla que he indicado. Por lo que he indagado por ahí no es de fácil solución.

Se bueno.
En línea

chuidiang
Administrator
Hero Member
*****
Mensajes: 1949



Ver Perfil WWW Email
« Respuesta #3 en: Febrero 14, 2007, 03:35:09 »

Bueno, al final me he tenido que crear una página .php intermedia para hacer la inserción y luego, con la función header() de PHP la redirecciono a la original. Desde el navegador apenas se nota nada.

Sed buenos.
En línea

Feer
Visitante
« Respuesta #4 en: Mayo 09, 2007, 05:09:51 »

o una ves usada puedes poner empty($_POST['variable']);
En línea
venkman
Jr. Member
**
Mensajes: 68


Ver Perfil
« Respuesta #5 en: Mayo 09, 2007, 03:49:44 »

Otra posibilidad es utilizar una redirección sin necesidad de una página intermedia.
En línea
keogh
Visitante
« Respuesta #6 en: Octubre 05, 2007, 10:31:10 »

No me habia dado cuenta de que este tema tiene mas de 120 días,  aun asi voy a comentar jejeje.

Feer la funcion empty($var); no vacía la variable lo que hace es regresar (true o false) si la variable esta vacía.

Para desetear una variable se usa unset($var). Probablemente sirva para el $_POST, podrías probarlo.

s4lu2
En línea
Páginas: [1] Enviar tema Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC XHTML 1.0 válido! CSS válido!