Foros del Web » Programando para Internet » PHP »

Evitar que responda 2 veces la misma persona(php)

Estas en el tema de Evitar que responda 2 veces la misma persona(php) en el foro de PHP en Foros del Web. tengo un formulario tipo encuesta hecho, quiero que una misma persona no pueda contestar el mismo formulario 2 veces. como puedo hacerlo??? para capturar la ...
  #1 (permalink)  
Antiguo 23/05/2005, 16:45
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
Evitar que responda 2 veces la misma persona(php)

tengo un formulario tipo encuesta hecho, quiero que una misma persona no pueda contestar el mismo formulario 2 veces. como puedo hacerlo???
para capturar la ip, o algo asi?
__________________
Share our Knowledge!
Adura Vita!
  #2 (permalink)  
Antiguo 23/05/2005, 16:50
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Créate una table en la base de datos que tenga nombre de usuairo e identificador de formulario, ambos como clave primaria compuesta. Por cada voto mete un registro en la tabla. Si ya está ese registro, es que ya votó.
__________________
Mi página personal: Julián Urbano
  #3 (permalink)  
Antiguo 23/05/2005, 17:08
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Ese tema se ha tratado ya varias veces.

La conclusión a la que se ha llegado siempre es que la única manera de asegurarte 100% que un usuario vota una sola vez, es hacer un rehistro de usuarios y que sólo puedan votar los usuarios registrados.

Como verás, no es lo que uno desea siempre. Pero eso dependerá de la importancia que le des a la veracidad de la información que quieres obtener.

Lo que puedes hacer es "estorbar" un poco a lo que quieren votar más de una vez.

Lo del bloqueo de ip tiene sus contras, porque puedes terminar bloqueando a todo un grupo de usuarios que compartan la misma (por ejemplo en un cybercafé).

La manera más sencilla es colocar una cookie en la PC del usuario que vota. Aunque estás supeditado a que el usuario tenga habilitadas las cookies en su navegador (aunque la mayoría las tenemos habilitadas).

También podrías además tener una variable de sesión que verifique si ya el usuario votó. De esa manera simplemente ya no le mostrarás el formulario con la encuesta (podrías mostrar directamente los resultados). Pero bastará con que cierre la ventana y vuelva a entrar a tu web, para que vuelva a ver el formulario.

Si los resultados de tu encuesta son demasiado importantes, entonces deberás limitarla a usuarios registrados. Si no, bastará con "estorbar" un poco a los que quieran votar más de una vez. Un poco de las dos maneras que te mencioné podría bastar.

Saludos
  #4 (permalink)  
Antiguo 24/05/2005, 04:50
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
matizo un poko mas

perdonar por no haberme explicado con detalle..
matizo un poko mas la pregunta.
hay 2 tipos de encuestas, anonimas y no anojimas, para las anonimas si que guardo los usuarios en una tabla, y verifico si han votado con su numero de usuario, contraseña, etc.. y todo va perfect.
PROBLEMA: para usuarios anonimos, el unico dato del que dispongo es la IP, y por eso habia pensado en este sistema para bloquear la respuesta masiva..
tambien habia pensado lo de que multiples usuarios respondan desde una misma ip (cibercafe) o incluso desde una misma amquina (como en una universidad), entonces habia pensado en no dejar contestar durante 10 minutos desde el mismo sitio(se que no controlare el 100% pero por lo menos bloqueare la respuesta masiva)
Alguien sabe como puedo hacer esto???
el codigo o algo asi? o las funciones?
nunca he usado cookies, si esa es la solucion podriais decirme donde sacar info o darme 4 ideas?
lo que yo habia pensadoes guardar la ip en la tabla y el momento en que se ha contestado, y si es 10 minutos antes dejar contestar y sino, no.
(peor tpko se capturar la ip)
que os parece?
__________________
Share our Knowledge!
Adura Vita!
  #5 (permalink)  
Antiguo 24/05/2005, 05:33
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Es verdad que con la ip puedes bloquear a mucha gente que utilice ip's privadas y sólo tengan una pública, pero para esos casos se puede usar también el puerto. Aunque dos clientes tengan la misma ip (la pública), nunca van a tener el mismo puerto, por cuestiones del NAT.
También es verdad que, seguramente, el cerrar el navegador y volverlo a abrir les baste. Puedes hacer algo de lo que dices, de guardar también la hora en que hizo la votación y permitirlo sólo después de un tiempo que tú marques. También piensa que la mayoría de gente tiene ip dinámica, con lo que simplemente desconectando y volviendo a conectar tendría otra nueva y:
1. Puede votar de nuevo
2. No pueda votar nunca alguien que no lo ha hecho aún, pues lo hizo otro que tenía antes su ip.
Lo mejor es lo de las cookies. Yo no he hecho nada con ellas, pero creo q es algo así:
set_cookie(nombre, valor, tiempo)
así que puedes poner una por cada encuesta:
set_cookie("encuesta1", "24-05-2005", 12000), por ejemplo. Creo que el tiempo es en segundos. De todas formas: http://www.forosdelweb.com/showthrea...513#post312513
__________________
Mi página personal: Julián Urbano
  #6 (permalink)  
Antiguo 25/05/2005, 06:42
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
ok! probare el tema de puertos a ver que tal va la cosa, o las cookies.. :D
__________________
Share our Knowledge!
Adura Vita!

Última edición por Pazosele; 25/05/2005 a las 16:58
  #7 (permalink)  
Antiguo 25/05/2005, 17:01
Avatar de Pazosele  
Fecha de Ingreso: marzo-2005
Ubicación: BCN - España
Mensajes: 200
Antigüedad: 19 años, 1 mes
Puntos: 0
para capturar los puertos y eso, como se hace exactamente???
__________________
Share our Knowledge!
Adura Vita!
  #8 (permalink)  
Antiguo 25/05/2005, 17:25
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Lo de los puertos de lo dije como una posible alternativa, pero insisto en que es mejor con cookies. De todas formas, la ip y puerto del cliente se obtienen así:
$_SERVER['REMOTE_ADDR'] y $_SERVER['REMOTE_PORT']
__________________
Mi página personal: Julián Urbano
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




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