2012-02-17 9 views
5

Es más fácil describir mi problema con un ejemplo de trabajo: incluso si no ha iniciado sesión, YouTube recuerda lo que ha visto y la próxima vez le ofrece sugerencias basadas en películas vistas anteriormente.¿Cómo puedo hacer para recordar que votar con las cookies es más fácil que esto?

Mi sitio es similar en cierta forma: los usuarios pueden votar artículos sin iniciar sesión, y el sitio recuerda los votos con cookies. He descubierto un método de trabajo, pero tiene que haber una manera más fácil, también ahora el uso de DB no está optimizado.

Para cada visitante hay un cheque si él tiene las cookies. Si es así, consulto sus votos. Si no, creo un usuario ficticio y le envío las cookies. Ahora guardo esta marca de tiempo de "last_visit" de los usuarios. Después de esto, todo es igual para ambos usuarios. Mi problema es que mi base de datos se está llenando de usuarios ficticios, por lo que hice que mis cookies caduquen en 3 meses y mi sitio comprueba regularmente qué usuarios no visitaron mi sitio en los últimos 3 meses y los elimina de la base de datos.

Sé que supercomplicaste esto, pero mi sistema de votación está usando AJAX, y no pude encontrar un método para enviar una cookie (y crear el usuario ficticio) solo si ocurre una votación y no cada vez que un visitante simple navega por mi sitio - sin voto.

También una nota: insisto en usar cookies: sé que sería más fácil almacenar IP-s cuando se produce una votación, pero hay escuelas, empresas que usan la misma IP y me gusta permitir que sus usuarios utilicen mi sitio.

¿Qué extrañé aquí? ¿Cómo se puede optimizar esto?

Respuesta

1

si no tienen una cuenta permanente, ¿por qué almacenar algo relacionado con ellos en la base de datos? solo registre sus votos previos en la cookie. también almacenaría votos totales en el archivo db, pero de forma anónima, y ​​no los relacionaría con los "usuarios".

+0

Debería haber mencionado esto: mi sitio ofrece sugerencias basadas en los votos, como: "quienes votaron en esto también votaron sobre estos", así que de alguna manera he conectado los votos en la base de datos. Actualmente uso usuarios para esto (dummies o usuarios reales). – ZTefter

+1

@ZTefter Lo tengo. Un poco más complicado. Todavía podría registrar quién votó por un hash aleatorio o algo almacenado en la cookie. Simplemente adjunte el hash a los registros de votos, pero en realidad no cree registros de usuarios. – dqhendricks

+0

Ok, gracias, creo que intentaré esto. Pero todavía estoy atrapado en la parte de creación de cookies. La votación es una función javascript AJAX, que llama a un archivo PHP con parámetros. Entonces, teóricamente, este PHP debería crear la cookie, sería lo mejor, pero no podría lograrlo. ¿Es realmente posible? ¿Es esta la forma correcta de hacer esto? – ZTefter

Cuestiones relacionadas