Stack Overflow на русском Asked by user242682 on December 9, 2021
Суть такая нужны кнопки ДА и НЕТ в конце статьи отвечающие на вопрос Понравилась ли статья.
При нажатии на кнопке ответ через AJAX сохраняется в БД в конкретной
статье. В админке можно посмотреть сколько ДА и сколько НЕТ
Для исключения многократного нажатия (накручивания счетчика) реализована индетефикация пользователя по IP.
2.1. создана таблица в БД с тремя столбцами (user_ip, post_id и result)
2.2. При заходе пользователя мы проверяем совпадает ли реальный IP пользователя и ID поста именно парой с тем что есть в БД если находим эту пару то закрашиваем кнопку того ответа который дал пользователь, но он может поменять свой ответ т.е. вторая кнопка не закрашена и кликабельна. Если не находим нужную пару то записываем данные в нашу таблицу в БД
Все работает нормально, есть только одно НО. IP пользователя величина очень не постоянная и может часто меняться особенно на мобильных как минимум при каждом подключении новый IP, бывает и чаще.
Отсюда вопрос как повысить точность определения (индетефикации) пользователя?
А иначе получается что один и тот же человек может довольно часто голосовать за одно и тоже просто меняя IP. Понятно что большинство специально так делать не будут, но даже не специально, возможно что человек заходит три дня подряд с мобильного с разных IP и и видит как будто он не голосовал и повторно голосует в надежде что его голос учтется, но он уже третий раз голосует.
Повысить точность можно путём установки куки или записи в localStorage. Но это сработает при условии, что пользователь заходит с одного и того же устройства/браузера.
А вообще единственный способ избежать повторного голосования - это регистрация и аутентификация пользователя. Других вариантов нет - всё остальное можно при желании легко обойти.
Answered by humster_spb on December 9, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP