Нет аутентификации пользователя и полностью предотвратить обман? Не могу, извини.
Вы можете ограничить подачу голосов по IP-адресу, но NAT, прокси-серверы и VPN делают это неработоспособным (IP-адрес может отображаться для многих пользователей - например, в школе или муниципальной сети, пользователь может отображаться на множество IP-адресов - например, на мобильные устройства. подключение или DHCP и т. д.).
Вы можете установить cookie, но их можно очень легко удалить или даже не сохранить (Ctrl + Shift + Del, кто-нибудь?).
Обратите внимание, что просто , установив cookie, вы предотвратите 90% пользователей от мошенничества (меньше, если у вашего сайта техническая, подкованная в Интернете аудитория); увы, если у вас нет какого-либо способа идентификации пользователей (например, с помощью аутентификации), нет никакого способа избежать обмана вообще (и даже тогда люди будут создавать клоп-куклы, чтобы увеличить количество своих голосов).
Кнопка «Мне нравится» в Facebook - это нечто совершенно иное - появляется , чтобы не использовать аутентификацию, но на самом деле она требует, чтобы вы вошли в FB - таким образом, FB сохраняет подсчет голосов в базе данных против идентификаторов пользователей. - и знает, за кого проголосовал пользователь, предотвращая большинство случаев мошенничества на выборах.
Пример - таблица «кто за что голосовал»:
user_id | article_id
1234 1
1234 5
1100 1
Без идентификатора пользователя вам потребуется установить анонимный идентификатор. Как я уже говорил выше, это можно сделать, но каждый раз, когда пользователь удаляет свои куки, он появляется в системе как совершенно новый пользователь. Поскольку сеансы реализуются с использованием файлов cookie, эта же проблема относится и к сеансам.
Если вам абсолютно необходимо разрешить анонимное голосование, вы можете сохранить в сеансе список статей, за которые проголосовал этот пользователь:
{ 1, 5 }
и проверьте его при доступе к странице. Если вы установите свои cookie и срок действия сессии достаточно долго, это будет своего рода работа - но опять же, как только пользователь очистит свои куки (или они истекут), bamf он ушел и будет выглядеть как новый пользователь , Невозможно предотвратить это, используя современные технологии (да, есть «постоянные куки», «флеш-куки», «evercookies» и еще много чего, но, в конце концов, это всего лишь временное хранилище, которое пользователь может стереть).