Определить пользователей, которые оценили пост ранее
Я делаю систему рейтинга для системы комментариев в 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 даст вам немного больше шансов не запутать людей в одной сети.