Веб-сайт. Проголосовать или проголосоватьВниз видео. Как ограничить количество пользователей, голосующих несколько раз? - PullRequest
8 голосов
/ 02 апреля 2010

Я работаю над сайтом (html, css, javascript, ajax, php, mysql), и я хочу ограничить количество голосов, которые конкретный пользователь голосует за конкретное видео.

Это похоже на систему YouTube, где вы можете проголосовать за или проголосовать за конкретное видео.

Каждый голос включает добавление в таблицу video.votes строки, в которой записывается время, направление голосования (вверх или вниз), IP-адрес клиента (с использованием PHP: $ ip = $ _SERVER ['REMOTE_ADDR'];) и конечно ID видео, о котором идет речь.

Добавление голосов так же просто, как; (псевдокод): Javascript: onClick (voice (a, b, c, d)), который передает переменные в скрипт вставки PHP через ajax, и, наконец, мы заменяем кнопки голосования сообщением «Спасибо за голосование».

ПРОБЛЕМА:

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

МОЙ ВОПРОС:

Как вы ограничиваете количество раз, когда конкретный пользователь голосует за конкретное видео?

МОИ МЫСЛИ:

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

ИЛИ

Перед тем, как вставить голосование, используете ли вы IP-адрес и videoID, чтобы узнать, голосовал ли этот же пользователь (IP) за это же видео (vidID) за последние 24 часа (mktime), и разрешать или запрещать функцию pollInsertion. на основании этого запроса?

ИЛИ

Тебе просто все равно? Примите предположение, что большинство пользователей в здравом уме, и у них есть дела поважнее, чем обновлять страницы и многократно голосовать.

Любые предложения или идеи приветствуются.

Ответы [ 5 ]

4 голосов
/ 03 апреля 2010

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

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

Перед тем, как вставить голосование, используете ли вы IP-адрес и videoID, чтобы узнать, голосовал ли этот же пользователь (IP) за это же видео (vidID) в течение последних 24 часов (mktime), и разрешать или запрещать голосование на основании этого запроса?

Многие пользователи могут использовать один и тот же маршрутизатор, фактически имея один и тот же IP-адрес. Делая это, вы можете раздражать пользователей, мешая им голосовать, потому что другой человек из того же офиса / домашнего хозяйства уже проголосовал на видео, прежде чем отправить им ссылку.

Тебе просто все равно? Примите предположение, что большинство пользователей в здравом уме, и у них есть дела поважнее, чем обновлять страницы и многократно голосовать .?

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

Там, где голосование важно, лучше разрешать голосовать только зарегистрированным пользователям. Конечно, люди могут и будут делать несколько счетов, чтобы голосовать (см. http://gallery.live.com для примера), но вы делаете это намного сложнее для них. Если голосование не очень важно, я бы выбрал вариант cookie.

3 голосов
/ 03 апреля 2010

Я бы использовал подход cookie. Это позволяет идентифицировать уникальных пользователей (для тех, кто принимает файлы cookie), в то время как IP это плохой подход, так как многие пользователи могут использовать один и тот же IP-адрес.

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

3 голосов
/ 02 апреля 2010

Если вас это не волнует, особенно в отношении эффекта 4chan, вы можете просто использовать cookie. Не используйте IP-адрес, потому что за обычными NAT-маршрутизаторами повсюду стоят блоки людей.

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

2 голосов
/ 03 апреля 2010

Возможно, лучший совет - просто позволить зарегистрированным пользователям голосовать. Таким образом, вы можете запросить WHERE user_id = 'x' and video_id = 'y', если запись найдена, не позволяйте ему голосовать.

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

1 голос
/ 03 апреля 2010

Если вы действительно пытаетесь предотвратить несколько голосов:

  1. Разрешить голосовать могут только аутентифицированные пользователи
  2. Хранить голоса в базе данных для проверки против
  3. Также сохранять голоса вкуки-файлы для первоначальной проверки и уменьшения нагрузки на базу данных.

Если вам все равно, просто используйте куки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...