Título: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 5 Mayo 2011, 05:58 am Buenas a todos tengo otra duda, como haria que los usuarios que esten registrados en la web solo voten una vez por cada articulo.
El codigo que tengo es este: Código
Este codigo hace que vote solo una vez y no vote mas en otros articulos, pero como haria que sea por id de la noticia, ejemplo de la tabla: id id_articulo nick votos Vote solo una vez por cada articulo. Espero me hayan entendido. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: [ Alberto] en 5 Mayo 2011, 06:57 am Citar pero como haria que sea por id de la noticia, ejemplo de la tabla existe una tabla noticia, seria el mismo mecanismo, no me queda claro que necesitas :huh:saludos Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 5 Mayo 2011, 12:47 pm existe una tabla noticia, seria el mismo mecanismo, no me queda claro que necesitas :huh: saludos Si, pero hay otra llamada voto que es donde pondria los votos por el id de la noticia. Espero me hayas entendido. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: Spider-Net en 5 Mayo 2011, 15:59 pm Crea una tabla con un log de votos, cada vez que un usuario vota una noticia guarda: id del usuario, id de la noticia y fecha en que se realiza la votación.
Luego cuando el usuario vota antes de sumar uno a la votación comprueba la tabla de logs y si existe un voto con el id del usuario para el mismo id de noticia, comprueba la fecha, si es igual al día de hoy entonces no permites el voto. Eso sería la parte lógica, es bastante fácil de implementar por eso no pongo el código, pero si tienes alguna duda pregunta y ya está. No te recomiendo que uses cookies para eso. Las cookies se guardan del lado del cliente y son sumamente fáciles de manipular. Así que cualquier usuario con un mínimo de conocimientos podrá manipular tu sistema de votos, y además tu sistema tal cual está es vulnerable a sql injection, si no filtras el valor de las cookies antes de realizar cualquier consulta SQL. Puedes usar la función mysql_real_escape_string (http://php.net/manual/es/function.mysql-real-escape-string.php) para filtrar el valor antes de realizar la consulta. Título: Re: Un solo voto por usuario en PHP Publicado por: RedZer en 5 Mayo 2011, 20:18 pm en la tabla voto no seque campos tengas pero de igual forma a la hora de votar guarda el id del usuario
y el id de la noticia asi cuando un usuario vaya a votar primero verificas con una consulta a la tabla votos para saber si existe el usuario y si ha votado en la misma noticia algo asi selec *from votos where id_usuario=usuario and id_noticia=id_noticia"la que estaras mostrando en ese momento para votar" Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 6 Mayo 2011, 00:46 am Crea una tabla con un log de votos, cada vez que un usuario vota una noticia guarda: id del usuario, id de la noticia y fecha en que se realiza la votación. Luego cuando el usuario vota antes de sumar uno a la votación comprueba la tabla de logs y si existe un voto con el id del usuario para el mismo id de noticia, comprueba la fecha, si es igual al día de hoy entonces no permites el voto. Eso sería la parte lógica, es bastante fácil de implementar por eso no pongo el código, pero si tienes alguna duda pregunta y ya está. No te recomiendo que uses cookies para eso. Las cookies se guardan del lado del cliente y son sumamente fáciles de manipular. Así que cualquier usuario con un mínimo de conocimientos podrá manipular tu sistema de votos, y además tu sistema tal cual está es vulnerable a sql injection, si no filtras el valor de las cookies antes de realizar cualquier consulta SQL. Puedes usar la función mysql_real_escape_string (http://php.net/manual/es/function.mysql-real-escape-string.php) para filtrar el valor antes de realizar la consulta. Hola Spider-Net, sin fecha seria mejor solo como dijiste antes cuando haya el id del usuario y de la noticia ya no permita mas votos, ahora tengo la duda como seria el codigo solo se lo basico. Otra forma sin cookies como seria? El valor de las oookies es vulnerable a SQL Injection? Bueno es todo. Saludos! RedZer, Gracias por la parte de select. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: RedZer en 6 Mayo 2011, 00:53 am Hola Spider-Net, sin fecha seria mejor solo como dijiste antes cuando haya el id del usuario y de la noticia ya no permita mas votos, ahora tengo la duda como seria el codigo solo se lo basico. cuales son tus tablas que ocupas?? para darte ideasOtra forma sin cookies como seria? El valor de las oookies es vulnerable a SQL Injection? Bueno es todo. Saludos! RedZer, Gracias por la parte de select. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 6 Mayo 2011, 01:48 am cuales son tus tablas que ocupas?? para darte ideas En la tabla voto: id id_articulo nick votos Como lo puse en el post. Y en la de noticias: id_articulo titulo contenido .... Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 6 Mayo 2011, 15:23 pm Ya lo he resuelto. :)
Ahora me queda otra duda, por ejemplo en el archivo votar.php?votar=idnoticia Un usuario puede votar en las demas noticias que esten creadas. Ejemplo: votar.php?votar=1 votar.php?votar=2 votar.php?votar=3 Como haria para proteger eso? Espero me ayuden Saludos! y gracias por la ayuda. Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 6 Mayo 2011, 15:34 pm Utilizando el método POST en vez de el GET.
Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 6 Mayo 2011, 17:01 pm Utilizando el método POST en vez de el GET. Ok xassiz, pero me podrias dar un ejemplo. :) Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 6 Mayo 2011, 22:02 pm Pues en vez de poner un enlace a votar.php?votar=x pondrías un formulario:
Código Código
Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: RedZer en 6 Mayo 2011, 22:38 pm Ok xassiz, pero me podrias dar un ejemplo. :) busca en google como evitar isqlSaludos! Título: Re: Un solo voto por usuario en PHP Publicado por: Spider-Net en 7 Mayo 2011, 01:26 am Otra forma sin cookies como seria? El valor de las oookies es vulnerable a SQL Injection? Bueno es todo. Saludos! RedZer, Gracias por la parte de select. Saludos! Otra forma sin cookies sería usando consultas sql tal y como te hemos sugerido. El valor de una cookie es fácilmente editable por el usuario, por lo que si directamente imprimes en la consulta el valor de la cookie puede ser que te encuentres que el valor de la cookie es una sentencia SQL específicamente preparada para alterar las tablas de tu base de datos y crear serios problemas en tu sistema. Filtra el valor de las cookies SIEMPRE antes de usarlos en una consulta SQL. Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 7 Mayo 2011, 01:33 am Otra forma sin cookies sería usando consultas sql tal y como te hemos sugerido. El valor de una cookie es fácilmente editable por el usuario, por lo que si directamente imprimes en la consulta el valor de la cookie puede ser que te encuentres que el valor de la cookie es una sentencia SQL específicamente preparada para alterar las tablas de tu base de datos y crear serios problemas en tu sistema. Filtra el valor de las cookies SIEMPRE antes de usarlos en una consulta SQL. Ok, Spider-Net filtrare las cookies una duda en vez de cookies puedo usar sesiones? Puedo usar mysql_real_escape_string? Gracias xassiz ya solucione el problema. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 7 Mayo 2011, 12:03 pm De nada. Y claro, usa mysql_real_escape_string() (http://php.net/manual/es/function.mysql-real-escape-string.php), cerrando siempre el valor entre comillas simples.
Código Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 7 Mayo 2011, 16:45 pm Ok, muchas gracias por la ayuda xassiz y a todos.
Saludos! ::) Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 8 Mayo 2011, 06:19 am Disculpen si hago otra pregunta, pero como haria que el propio autor del tema no pueda votar, solo los demas usuarios?
Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 8 Mayo 2011, 13:00 pm Código Algo así :rolleyes: Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 8 Mayo 2011, 17:42 pm Código Algo así :rolleyes: Gracias de nuevo, si era eso :) Pero tuve que cambiar $_SESSION por $_COOKIE para que funcionara, como haria para dejar el login por $_SESSION? cambiando $_COOKIE por $_SESSION? Saludos! y disculpas. Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 8 Mayo 2011, 22:36 pm como haria para dejar el login por $_SESSION? ¿A qué te refieres?cambiando $_COOKIE por $_SESSION? Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 8 Mayo 2011, 23:01 pm Por ejemplo en el login que tengo es por cookies, como haria para logear por session?
Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: xassiz~ en 8 Mayo 2011, 23:03 pm Utilizando sesiones xD
Código Al principio de tu código, utilizando variables de sesión... Te recomiendo que te leas algo sobre sesiones. Saludos! Título: Re: Un solo voto por usuario en PHP Publicado por: wirelesswifi en 8 Mayo 2011, 23:32 pm Ok gracias, con esto estara mas seguro la web?
Por que con las cookies pueden editar. Saludos. |