Autor
|
Tema: [Ayuda] Comprobar si usuario voto (Leído 5,274 veces)
|
wirelesswifi
|
Buenas, tengo este codigo: //Comprobar si usuario voto. $ip = $_SERVER['REMOTE_ADDR'];
if(mysql_query("SELECT ip FROM noticias WHERE id LIKE '%$ip%'")){ echo "Gracias por votar.";
}else{ echo "Usted ya ha votado."; } Ok, cuando pulso el boton Votar va a votar.php donde tengo el codigo de arriba, luego me sale: Gracias por votar. Todo bien hay. Pero cuando pulso de nuevo Votar sigue votando y sumando votos en la id de la noticia. Ya registra la IP en la id de la noticia que es IP el campo. Pero sigue votando cuando pulso Votar, que estara mal en el codigo de arriba? Espero me ayuden Saludos...
|
|
« Última modificación: 30 Octubre 2010, 01:39 am por wirelesswifi »
|
En línea
|
|
|
|
Shell Root
|
Ando un poco borrachín, así que puede ser una estupidez lo que voy a poner, pero... Se supone qué el código que tienes hace lo siguiente, Si se realiza correctamente la sentencia SQL, entonces mostrar 'Gracias por votar.' de lo contrario mostrar 'Usted ya ha votado.'Observaciones:1. No veo donde se realiza el ingreso de la dirección IP a la base de datos (Clausula INSERT)2. Considero que la QUERY debería ser así, $sSQL = "SELECT ip FROM noticias WHERE id = '".$ip."'";
|
|
« Última modificación: 30 Octubre 2010, 02:41 am por Shell Root »
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
usuario sin login? es tan efectivo como usar una cookie xD
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
[u]nsigned
Desconectado
Mensajes: 2.397
JS/Node developer
|
En todo casi si lo que queres evitar es que una misma ip vote dos veces podes hacer: $ip = $_SERVER['REMOTE_ADDR']; $result = mysql_query("SELECT ip FROM noticias WHERE id='".$ip."' LIMIT 1"); echo "Gracias por votar."; }else{ echo "Usted ya ha votado."; }
|
|
|
En línea
|
No hay atajo ante la duda, el misterio se hace aquí... Se hace carne en cada uno, el misterio es existir!
|
|
|
wirelesswifi
|
usuario sin login? es tan efectivo como usar una cookie xD
Como seria por cookie Nakp Gracias Shell Root y unsigned, lo que pasa es que las ips las guardo por comas. Un ejemplo: 190.265.157.154,190.657.12.647 y asi por cada noticia. No por row Gracias igual Saludos...
|
|
|
En línea
|
|
|
|
tragantras
Desconectado
Mensajes: 465
|
puedes hacer un select de las ips asociadas a la noticia, luego, haces un explode() según las comas (,) y con un foreach recorres el array buscando la ip!
o directamente haces el select de las ips asociadas a la noticia y buscas la subcadena ip dentro de la ristra de ips con strstr()
de todas formas, la logica if-else que has seguido es incorrecta, sería todo lo contrario, además select devuelve false cuando se ha producido un error, deberías pasarselo a mysql_num_rows como apuntaban por ahi arriba
el uso de cookies yo no lo pondría, pueden borrar la cookie y votar mil veces, o directamente no aceptar las cookies y hacer magia...
|
|
|
En línea
|
|
|
|
Shell Root
|
..., lo que pasa es que las ips las guardo por comas. What the fuck?. Entonces para qué el motor de base de datos?
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
wirelesswifi
|
puedes hacer un select de las ips asociadas a la noticia, luego, haces un explode() según las comas (,) y con un foreach recorres el array buscando la ip!
o directamente haces el select de las ips asociadas a la noticia y buscas la subcadena ip dentro de la ristra de ips con strstr()
de todas formas, la logica if-else que has seguido es incorrecta, sería todo lo contrario, además select devuelve false cuando se ha producido un error, deberías pasarselo a mysql_num_rows como apuntaban por ahi arriba
el uso de cookies yo no lo pondría, pueden borrar la cookie y votar mil veces, o directamente no aceptar las cookies y hacer magia...
Si, es mejor por mysql_num_rows entonces crearia una tabla llamada votos con los campos id_noticia e IP. Luego en el PHP de votos guardaria la IP de cada noticia en el campo IP y la ID de la noticia. Todo bien, pero como haria para mostrar los votos en cada noticia los que ya votaron por mysql_num_rows? Gracias por la ayuda Disculpa haberlos molestado Saludos.
|
|
|
En línea
|
|
|
|
juancho77
Desconectado
Mensajes: 455
rie con demencia
|
Sin ofender, pero estas tratando de empezar a manejar sin andar en bici primero.
Una solución bastante elegante seria decir: Una noticia tiene cero o mas votos. Un usuario puede votar cero o mas noticias, pero cada noticia una sola vez. Entonces agarras tu base de datos y creas una tabla que se llame news_vote o algo asi, que tenga campos ID, IP, ID_NOTICIA. La sentencia SQL te queda algo asi:
"SELECT * FROM NEWS_VOTES WHERE IP=ip del usuario AND ID_NOTICIA=identificador de la noticia que se quiere votar" (hace mucho que no uso raw sql, seguro que a lo de arriba le faltan comillas y eso)
Esa sentencia te devuelve un ResultSet, un objeto con las filas de resultado. La funcion mysql_num_rows() lo unico que hace es contar el numero de resultados obtenidos. Lo que vos tenes que hacer es decir
si mysql_num_rows()>0 entonces YA HA VOTADO, sino GRACIAS POR VOTAR.
Eso de anotar todas las ips separadas por coma es imposible de mantener sencillo y una implementacion muy mala. Creeme que una tabla con 100 filas o una con 1000 se procesan casi en el mismo tiempo.
Tanto la implementacion con Cookies como usando la variable REMOTE_ADDR son malas por el hecho que son "fakeables". Todo es fakeable digamos, pero tener un user system es mucho mas fuerte que usar ip. Ademas, gran parte de los usuarios usan ips aleatorias dinamicas asi que te estarian engañando sinb darse cuenta.
Para mostrar los votos de cada noticia no usas mysql_num_rows()!!!! Haces un select where id_noticia=noticia!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Un solo voto por usuario en PHP
« 1 2 3 »
PHP
|
wirelesswifi
|
23
|
11,179
|
8 Mayo 2011, 23:32 pm
por wirelesswifi
|
|
|
Una web ciudadana ayuda a los electores a decidir su voto
Noticias
|
wolfbcn
|
1
|
2,360
|
12 Mayo 2011, 23:58 pm
por k1k0_o
|
|
|
[BASH] Comprobar grupo de un usuario
Scripting
|
ccrunch
|
2
|
4,100
|
3 Marzo 2013, 18:49 pm
por ccrunch
|
|
|
[C] Ayuda Comprobar cadena que cambia
Programación C/C++
|
Goddamn
|
5
|
2,407
|
24 Agosto 2016, 11:53 am
por Goddamn
|
|
|
[Ayuda] Comprobar Símbolos en un string.
.NET (C#, VB.NET, ASP)
|
**Aincrad**
|
2
|
2,275
|
4 Noviembre 2019, 16:58 pm
por ThunderCls
|
|