Veréis, estoy metido en un nuevo proyecto personal. La verdad es que ya está casi acabado y estoy ultimando los últimos detalles. Una parte muy importante de la dinámica del sitio son los votos, que se pueden hacer anónimamente. Desde un primer momento me quise informar sobre como trabajar con usuarios no registrados, por lo que me bajé el source de meneame y me leí la parte sobre votos.
Lo simplifiqué hasta que decidí simplemente crear una tabla en la BD donde guardo los votos. Si el usuario está registrado guardo su ID en una columna, si no guardo la IP en otra columna. Es decir, los anónimos son registrados mediante su IP en una tabla 'votos'. Cuando un anónimo vota se consulta esta tabla, se busca la fila donde esté la id del post que se va a votar y la IP del anónimo, si ya existe esta fila significa que ya ha votado (no puede volver a votar), sino se crea esta fila.
Hasta aquí fácil. El problema es que muchos tenemos IP dinámica (no controlo mucho este tema, lo que está claro es que la IP va cambiando). Con lo cual, al cambiar la IP los anónimos pueden volver a votar. Lo que voy a hacer ahora és que los anónimos, al votar, crean una cookie en su ordenador con su IP. Al volver a votar se comprobará si su IP actual coincide con la de las cookies, si no és así, en la tabla de votos de la BD se cambian todas las IPs que coinciden con las de las cookies por la nueva y se actualiza la cookie con la nueva IP. Luego se procederá como he explicado en el párrafo anterior.
El problema está claro, si el anónimo cambia de IP y borra las cookies puede volver a votar... Por otra parte, en menéame también tienen un sistema para detectar proxies y banearlos, pero lo dejaré para más adelante. No creo que nadie quiera mañar los votos tan elavoradamente cuando acabo de empezar.
¿Alguien tiene alguna idea para mejorar el sistema? Si no es así espero que esto os sirva como tip para los que trabajéis con anónimos en un futuro.
Gracias de antemano!