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?
| ||||
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 |
| ||||
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 |
| ||||
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! |
| ||||
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 |
| ||||
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 |