Определить пользователей, которые оценили пост ранее

Я делаю систему рейтинга для системы комментариев в PHP.
Комментаторы должны войти, но анонимные пользователи могут оценивать комментарии.
Я не хочу, чтобы один пользователь мог оценивать свой комментарий 100 раз!
Как я могу обнаружить пользователей с рейтингом ранее?

Спасибо

2 ответа

Решение

Вам необходимо хранить идентификационные данные пользователя для каждого голоса. Вы можете идентифицировать пользователей по:

1) идентификатор пользователя, если пользователи должны войти в систему
2) IP-адрес
3) Cookie с IP-адресами, потому что куки могут быть удалены или проигнорированы
4) Вы можете использовать идею из https://panopticlick.eff.org/ и объединить ее с IP

Когда кто-то голосует, проверьте в вашей базе данных

SELECT * FROM votes WHERE voter_ip = '(IP)' AND comment_id = (ID) AND user_agent = '(AGENT)'

Если вы не смогли найти запись, тогда сделайте свой голос, а затем

INSERT INTO votes (voter_ip, comment_id, user_agent) VALUES ('IP', 'ID', 'AGENT')

Ты можешь получить IP от $_SERVER['REMOTE_ADDR'] а также AGENT от $_SERVER['HTTP_USER_AGENT']

Не самый надежный метод, но он не позволит обычным пользователям голосовать более одного раза, плюс использование USER_AGENT даст вам немного больше шансов не запутать людей в одной сети.

Другие вопросы по тегам