Hola a todos:
Primero que todo disculpas al moderador, pero pense que asi seria mejor. Error mío.
Estoy buscando la forma de negar al usuario a votar en una encuesta creada con mysql y php, más de una vez.
Atentamente
Pablo Araya.-
| |||
Ahora las preguntas de rigor: Quien vota en tu sistema? .. usuarios registrados o usuarios No registrados (si es que dispones de algún sistema de registro/seguimiento de usuarios)? Te comento que la única forma realmente efectiva de que un usuario no vote más que una vez es que este sea un usuario registrado en tu aplicación. Otras técnicas como registrar IP, usar cookies y demás no sirven para mucho .. Cualquier usuario en esas condiciones que quiera saltarse tu sistema de validación lo hará. (Yo por ejemplo no invierto tiempo en esos desarrollos .. a no ser que el "margen de error" que esto tiene lo acepten .. Creo que si uno pide una encuesta es para que sea lo más veridica posible. Estos temas hay que plantearselos a quien corresponda). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
mmm ... son usuarios no registrados. Pero a pesar de ello me gustaría restringir de todas formas la encuesta a solo un voto. (a pesar que no sea 100% factible) Muchas Gracias.-
__________________ Adios ...!!!! |
| |||
Pues decide .. que vas a usar: Cookies? .. registrar la IP? .. Conoces los prós y contras de estas opciones? (te las puedes imaginar?). Podrías empezar por ir registrando la IP ... Se trata de que obtengas la IP del usuario que está usando (valga la rebundancia) tu script de proceso del registro del voto. Es ahí donde tomas dicho dato que lo tienes en: $_SERVER['REMOTE_ADDR"] Dicho dato lo almacenas en una tabla de tu BBDD, pero antes verificas que no esté dicho dato en tu BBDD, si no está .. contabilizas el voto y registras el dato. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Si, conozco los pro y los contra de cookies e ip ... me gustaria hacer una restriccion via IP .. vi en las faqs que existe una pero no me funciono ... me podrias ayudar en ello por favor?
__________________ Adios ...!!!! |
| |||
Cita: Y dale .. Si dices que algo que pruebas NO te funciona .. debes indicar lo que probastes y explicar que problemas concretos tuvistes!!!!!!!!!!!!. No sirven de nada comentarios como "no me funciona" .. "probé esto" o "probé lo otro" sin -especificar- que es lo que realmente -usastes-. Si hay mensajes de error del código que usas o comportamiento inesperado -debse- describirlo al detalle .. date cuenta que no estamos ante tu "PC" y condiciones de pruebas para verlo por nosostros mismos!!!!. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
![]() La verdad en este momento no te puedo señalar el error ... tengo mi encuesta que funciona perfectamente pero quiero hacer lo del bloqueo de ip ... con este tabla de BD CREATE TABLE `ips` ( `ip` varchar(11) NOT NULL, PRIMARY KEY (`ip`) ) TYPE=MyISAM; se me perdio el codigo que tenia para realizarlo asi es que estoy desde cero ... no se como se puede hacer ni tampoco puedo señalar el error
__________________ Adios ...!!!! |
| |||
Bueno .. ya te he comentado que debes usar la variable $_SERVER['REMOTE_ADDR'] que te dá la IP . . ese dato lo ingresas a tu BBDD si no está ya en ella. Sabes hacer una consulta SQL condicional? (WHERE ...) Pretendo que lo vayas haciendo tu y no hacerlo yo mismo .. realmente es bien sencillo, pero si no vas "pensando" así nunca sacaras nada por tí mismo (espero que me entiendas ..) Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Codigo Código PHP: |
| ||||
ya ok ... esta el codigo pero en la BD debo crear otra tabla llamada "tabla_ips" con 3 variables : ID ip idencuesta pero que atributos doy a estas variables?
__________________ Adios ...!!!! |
| ||||
![]() CODIGO PHP Código HTML: <? $servidor="localhost"; $usuario="user"; $password="**"; $base="base_encuesta"; $SQLid = mysql_connect($servidor,$usuario,$password); mysql_select_db($base,$SQLid); $SQLquery = "SELECT * FROM tblenc order by encid desc"; $SQLresult = mysql_query($SQLquery,$SQLid); $SQLrow = mysql_fetch_array($SQLresult); ?> <form name="encuesta" method="post" action="encuesta.php"> <input type=hidden name="encid" value="<?echo $SQLrow[0]?>"> <table border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td> <div align="center"><font color="000000" face="Verdana, Arial, Helvetica, sans-serif" style="font-size: 12px"><strong> <? echo $SQLrow[1]?> </strong></font></div></td> </tr> <tr> <td> <p> <font color="000000" face="Verdana, Arial, Helvetica, sans-serif" style="font-size: 9px"> <label> <input type="radio" name="voto" value="1"> <? echo $SQLrow[2]?></label> <br> <label> <input type="radio" name="voto" value="2"> <? echo $SQLrow[3]?></label> <br> <label> <input type="radio" name="voto" value="3"> <? echo $SQLrow[4]?></label> <br> <label> <input type="radio" name="voto" value="4"> <? echo $SQLrow[5]?></label> <br><br> </font></p></td> </tr> <tr> <td> <div align="center"> <input type="submit" name="Submit" value="Votar" style="color: #003366; background-color: #FFFFFF; font-family:verdana; font_size:xx-small"> </div></td> </tr> </table> </form> Código HTML: CREATE TABLE `tblenc` ( `encid` int(11) NOT NULL auto_increment, `encprg` varchar(50) default NULL, `encrpt1` varchar(50) default NULL, `encrpt2` varchar(50) default NULL, `encrpt3` varchar(50) default NULL, `encrpt4` varchar(50) default NULL, `encval1` int(11) NOT NULL default '0', `encval2` int(11) NOT NULL default '0', `encval3` int(11) NOT NULL default '0', `encval4` int(11) NOT NULL default '0', `enctot` int(11) NOT NULL default '0', PRIMARY KEY (`encid`), FULLTEXT KEY `encprg` (`encprg`) ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; He intentado hacer lo que me dices y no me funcionó, tampoco sale error. Me gustaría saber donde coloco el codigo que me has dado y como creo la tabla BD 'tabla_ip' (cuantos valores y que atributos)
__________________ Adios ...!!!! Última edición por BLAH !!; 28/10/2006 a las 13:00 Razón: faltó la pregunta |
| ||||
eske utiliza un poco tu logica, si vas a restringir la encuesta, por favor, pon un poco de logica para lo ke hace el script, como interactua con SQL yo utilizo ese script, por ke yo lo hice (en mi caso no lo descargue ni lo copie) pero sake toda la logica ke kize haz lo mismo... ![]() |
| ||||
![]() Cita: Ok señor Lógico . xD . Primero que todo hice lo que dices tu, traté de usar la "logica", he hice esto:Código HTML: <? $servidor="localhost"; $usuario="user"; $password="**"; $base="base_encuesta"; $SQLid = mysql_connect($servidor,$usuario,$password); mysql_select_db($base,$SQLid); $SQLquery = "SELECT * FROM tblenc order by encid desc"; $SQLresult = mysql_query($SQLquery,$SQLid); $SQLrow = mysql_fetch_array($SQLresult); $ip = $_SERVER['REMOTE_ADDR']; $resultados = $_GET['idencuesta']; $consulta = mysql_query("SELECT ip FROM tabla_ips WHERE ip='$ip' AND idencuesta='$resultados'",$SQLid); if($num=mysql_num_rows($consulta) != 0){ echo"Tu ya votaste esta encuesta"; exit; } mysql_query("INSERT INTO tabla_ips (ID, ip, idencuesta) VALUES ('', '$ip', '$resultados')",$SQLid); ?> <form name="encuesta" method="post" action="encuesta.php"> ....
__________________ Adios ...!!!! |
| ||||
Se estan olvidando de algo... Holas, no soy experto en esto, pero creo que la solucion planteada ![]() ![]() Juan y Maria son esposos, y visitan la pagina mipagina.com, ellso tienen un pc, en casa, por lo cual los dos acceden a la internet desde el mismo lugar, por lo cual si uno de ellos vota, digamos juan vota, su ip sera registrada, por lo cual si maria desea votar en la misma pagina, atraves de su pc, pues no podra, pues ya ha sido registrado la ip, por lo cual se estaria perdiendo voto, y por lo cual esto es un caso general, comprendo que diran pero creo un script que me cada una hora desregistre la ip, y que pasa si en esa hora hay 10 votantes, que estan intentanto acceder desde el mismo pc, el tiempo para votar de nuevo es algo tedioso de manejar, y otro pues creo que al final los votantes terminarian aburriendose, pues al no poder votar simplemente se van. Creo que se podria tomar en cuenta lo siguiente, que los usuarios esten registrados (como ya lo dijeron que esta ok entonces), es asi mas facil impedir, que un usuario vuelva a votar dos veces, pues simplemente se crearia un registro de los usuarios que votan y pues se restringiria de manera facil, y se podria crear un script que cada dia vacee, esta tabla de usuarios que han votado, y asi permitirle votar al usuario otra ves (ojo no estoy deacuerdo con esto, por que simplemente es fraude, no se puede concebir a un usuario votar dos veces creo yo ![]() En el caso de que los usuarios no esten registrados, pues podrias crear un codigo autogenerado no identico, que el usuario deba ingresar, al momento de votar, cosa que registras a travez de ese codigo autogenerado, y asi permites que mas de un usuario puede votar desde una misma ip, sin restringirle el mismo. Ahor el detalle es que un mismo votante puede hacerlo mas de una vez, jaja y creo que volvemos a lo mismo y creo que hable de mas en fin nos vemos, seguire pensando en una solucion ![]() |
| ||||
pero aqui vamos de rapido, si keremos una encuesta abierta (a todo el publico (debido a el tiempo de registro)) es mejor usar tablas ke eliminen el registro cuando el usuario salga de la pagina (eso es mejor) jeje ![]() |
| ||||
![]() Primero que todo muchas gracias. Lo del "problema" que se plantea, lo tengo claro, y no me complica porque tenía pensado hacer lo que Bellenger dice (desregistre la ip despues de un tiempo). mi problema consiste en mi base de datos ... tengo lista la tabla "tblenc", pero no se ocmo crear o que poner en la tabla "tabla_ips" Ademas en el codigo PHP que puse arriba me lanza este error: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/.../.../encuesta/index.php on line 27 La linea 27 es : $consulta = mysql_query("SELECT ip FROM tabla_ips WHERE ip='$ip' AND idencuesta='$resultados'",$SQLid);
__________________ Adios ...!!!! Última edición por BLAH !!; 01/11/2006 a las 13:50 |
| ||||
ya ... ese error era porque no tenia creada la tabla_ips ahora la cree con dos campos 1) ip ---> primario 2) idencuesta pero la duda es que debo poner en Field (ip y idencuesta), Type, Collation, Attributes, Null, Default, Extra
__________________ Adios ...!!!! |
| ||||
no, chiko, te recomiendo ke tu tabla contenga: ID (tipo INT con 10 chrs) <- primario y autoincrement ip (tipo varchar con 25 chrs) idencuesta (tipo int con 5 chrs) entonces, para ke subas a tu tabla un registro, sacas en una variable el IP de la makina, en este caso seria: $ip=$_SERVER["REMOTE_ADDR"]; es todo ![]() |
| ||||
lo mejor es por sesiones y registro de ips. Echale una leida a phpsessid y la recomendación de Cluster y modorro va bien. Respecto al ejemplo de ESPOSO y ESPOSA esta bien planteado pensando en los café-internet. Asi que te recomiendo mejor usar phpsessid de esta forma es una sesión para cada usuario y puedes hacer que expire determinado tiempo sin afectar a otros usuarios. Saludos
__________________ Hospedaje Web al mejor costo! |
| ||||
![]() mmm... apesar de seguir los pasos que me dijiste no me funciona ... esta es la tabla_ips creada en mi MySql. Código HTML: -- -- Table structure for table `tabla_ips` -- CREATE TABLE `tabla_ips` ( `ID` int(10) NOT NULL auto_increment, `ip` varchar(25) character set utf8 collate utf8_unicode_ci NOT NULL default '0', `idencuesta` int(5) NOT NULL default '0', PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- -- Dumping data for table `tabla_ips` --
__________________ Adios ...!!!! |