Intereting Posts
как использовать ajax в zend framework 2 или AjaxContext? parse_url () возвращает ошибку, когда example.com передается Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым результатом MySQL CodeIgniter: пытается вызвать метод конструктора, чтобы проверить, зарегистрирован ли пользователь (вызывает бесконечный цикл перенаправления) Обслуживание json-файла для приложения IPHONE Обнаружение браузеров старше двух лет Escape Javascript в PHP Внешний вид WordPress по категориям и времени Как разделить разделенный запятыми отдельный столбец на несколько столбцов в php mysql PHP mysqli_fetch_all дает мне пустой экран Функция php для отмены заданных переменных FPDF – WriteHTML в Multicell? Доступ к константе класса с использованием простой переменной, которая содержит имя константы PHP Максимальное количество вставок в одном SQL-запросе Не может быть несколько потоков за сеанс

Внедрение системы голосования без регистрации

Я хотел бы внедрить систему голосования на своем сайте, не заставляя их создавать учетную запись. В конечном итоге они будут голосовать вверх / вниз часть контента, которая имеет уникальный идентификатор.

  • Я знаю, что я мог бы хранить записи в таблице с IP / ID, но что делать, если из одного и того же IP-адреса поступает более одного пользователя?
  • Есть ли способ однозначно идентифицировать посетителей, не привязывая их к внешнему ip?
  • Если вы создали GUID, сохраните его в файле cookie на этом компьютере, можно ли его получить позже на том же компьютере с тем же IP? Другой IP?

Будем очень благодарны за любые мысли по этим вопросам или за понимание лучшего подхода.

Да, вы можете использовать куки-файл и установить срок действия очень далеко в будущем; однако ничто не мешает кому-либо очистить свой кеш и снова голосовать.

Лучше всего использовать куки-файл и не допускать голоса от одного и того же IP-адреса в течение 15 минут друг от друга … без регистрации это самое лучшее, что вы можете сделать.

Вы можете определить пользователей на основе не только их IP. Например, вы можете включить IP + всю информацию заголовка запроса (например, Browser, Version Numbers, Capabilities) и хэш. Это будет более или менее однозначно идентифицировать вашего пользователя (но не 100%, к сожалению).

Вы можете разрешить им входить в систему с использованием OpenId , это позволит им использовать существующую учетную запись для голосования, и им не нужно будет создавать новую учетную запись.

Google и Yahoo и другие имеют службы, позволяющие вам аутентифицировать пользователей.

Если вы не аутентифицируете пользователей в некотором роде, система голосования будет открыта для злоупотреблений.

Пользовательский агент IP + намного уникален, чем IP; не уверен, насколько это подходит для ваших целей. Если вы отправите им куки-файл, он будет возвращен этим компьютером (если они используют тот же браузер), пока куки-файл останется вокруг, независимо от IP-адреса, но заметьте, что пользователь может избавиться от файла cookie, когда захочет ,

Если вас беспокоит использование этой системы для предотвращения мошенничества с голосованием, я не думаю, что вы не сможете обойтись, чтобы у них была учетная запись.

В принципе для вас невозможно использовать cookie, чтобы различать посетителя, который никогда не посещал, и посетителя, который посетил, но удалил cookie. Следовательно, любое решение на основе файлов cookie будет уязвимым для тривиального мошенничества с голосованием.

Подумайте об обнимании этой реальности в духе Дж. Генри Лоуенгард , который, когда он установил 100 лучших сайтов на WFMU еще в середине 1990-х годов, предоставил кнопку на странице «ваш голос засчитан» на странице «Назад и проголосовать» Больше!"

Фактически, идите туда сейчас и проголосуйте за (или против) StackOverflow!

Я сейчас думаю о той же проблеме. мои возможные подходы будут следующими:

  • (A) вы можете принимать голоса от тех людей, которые были на вашем сайте (используя СЕССИИ) не менее 15 минут (это может быть приблизительное время, когда пользователь может прочитать статью в блоге / сайте). когда они голосуют, таймер сбрасывается для следующего голосования. так что таким образом, нет необходимости удалять файлы cookie для пользователей.

  • (B) вы можете принимать голоса от незарегистрированных людей и получать их адрес электронной почты и отправлять им ссылку для голосования на свой голос. когда они нажимают ссылку подтверждения в своем почтовом ящике, вы можете фактически подсчитать голос. это похоже на голосование за адрес электронной почты.

  • (C) комбинации (A) и (B). таким образом вы можете быть уверены, что будете отправлять контрольные ссылки только каждые 15 минут одному пользователю, которого не будет много 🙂

Я знаю, что это старо, но просто приехал сюда и подумал.

Как насчет чего-то вроде https://panopticlick.eff.org ? Еще одна вещь, которую можно было бы бросить.

(Если это когда-либо выходит в автономный режим: это совокупный отпечаток пальца, сделанный из обычного материала плюс + Детали плагина для браузера + Часовой пояс + Размер экрана и глубина цвета + Системные шрифты + суперкурки)

Другой вариант – использовать сеанс. Это позволит вам хранить идентификатор сеанса в сочетании с IP-адресом. Это позволит вам получать несколько IP-адресов, но с разных сеансов. Единственным недостатком этого было бы возможное переключение браузеров. Добавление файла cookie, чтобы сделать его трио, могло помочь избавиться от наводнений.

Я делал это в прошлом только с IP-адресом, который, похоже, работает в небольших масштабах.

Вы можете попробовать Evercookie или подобные решения.