Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Despues de un insert (https://www.clubdelphi.com/foros/showthread.php?t=42805)

KeyMan 23-04-2007 21:16:17

Despues de un insert
 
Hola amigos como hacer lo siguiente.

Un usuario añade un comentario, una vez echo esto, si es malicioso este puede ir otra vez a la página anterior y puede volver ha insertar otro comentario, el tema seria que no pudiera ir hacia atrás o que en un determinado tiempo no pudiera insertar. Como puedo hacerlo o como pensais que seria el metodo adecuado.:confused:

dec 23-04-2007 21:43:19

Hola,

Necesitarías poder identificar unívocamente los comentarios para que estos no puedan duplicarse. Sin embargo ahora mismo no veo cómo puede hacerse esto claramente. Ignoro si acaso el título del comentario pudiera servir, por ejemplo. Pero estaríamos impidiendo comentarios distintos con el mismo título.

Podría tal vez juntarse un campo "fecha" con el campo "título" de modo que consideremos duplicado un comentario que tiene el mismo título que otro publicado el mismo día, por ejemplo. O tal vez, si los comentarios son enviados por usuarios "registrados", no permitir a un mismo usuario enviar más de un comentario con el mismo título, pero, me temo que esto también es limitar bastante.

En todo caso piensa eso. Si lo que tuvieras que guardar fueran "enlaces" en lugar de comentarios, podrías coger un supuesto campo "URL" de los enlaces como unívoco: así un mismo usuarios no podría insertar más de dos enlaces con la misma URL. Pero, tratándose de comentarios la cosa cambia, porque, pienso que el título de un comentario no puede compararse con la URL de un enlace.

No sé. Como no quiero liarla más me quedo de momento con juntar dos campos: fecha del comentario y título del mismo. Así, antes de realizar la inserción en la base de datos podrías comprobar si existe un comentario con dicho título enviado el mismo día, e incluso si lo envió el mismo comentario, y en caso afirmativo no insertar el comentario e informar al usuario de esta circunstancia.

Respecto de que el usuario no pueda volver atrás en la página Web... de modo que duplique "accidentalmente" un comentario... si ponemos la cortapisa indicada anteriormente ya no podría darse este caso. Y, en todo caso, piensa que cuando se envía un formulario y se "refresca" la página o se "vuelve" a la página del formulario... es el navegador quien pregunta al usuario si quiere volver a enviar los datos del formulario... y yo ahora mismo no sé cómo podría evitarse esto.

También podrías hacer alguna otra cosa para evitar que un usuario enviara "muchos" comentarios en poco tiempo, variando el título del comentario, para saltarse la barrera que comentamos antes. Puedes, por ejemplo, utilizar un "captcha" ("Prueba de Turing pública y automática para diferenciar a máquinas y humanos"), ya sabes, una imagen que muestra un código que el usuario ha de rellenar cada vez que va a enviar el formulario, y que previamente se comprobará si es correcto o no.

Y aparte de eso puedes utilizar las sesiones de PHP, de modo que guardes en variables de sesión el número de comentarios enviados por un determinado usuario (en realidad los comentarios enviados desde una misma sesión de usuario), número que luego podrías comprobar para actuar en consecuencia. Puedes usar también variables de sesión para almacenar además del número de comentarios la IP del usuario, por ejemplo, de modo que ya no pueda enviar comentarios... qué sé yo, en un día entero, no sólo en su sesión de usuario.

Como ves no he puesto código alguno, pero, si quieres que entremos más en detalles pues lo vamos haciendo paulatinamente, con la ayuda del resto de compañeros. :)


La franja horaria es GMT +2. Ahora son las 20:07:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi