Веб-сайт. VoteUp или Видео VoteDown. Как ограничить пользователей, голосующих многократно?

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

Его подобное системе YouTube, где Вы можете voteUp или voteDown конкретное видео.

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

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

ПРОБЛЕМА:

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

МОЙ ВОПРОС:

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

МОИ МЫСЛИ:

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

ИЛИ

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

ИЛИ

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

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

8
задан Donal.Lynch.Msc 2 April 2010 в 19:55
поделиться

5 ответов

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

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

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

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

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

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

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

4
ответ дан 5 December 2019 в 12:57
поделиться

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

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

3
ответ дан 5 December 2019 в 12:57
поделиться

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

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

3
ответ дан 5 December 2019 в 12:57
поделиться

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

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

2
ответ дан 5 December 2019 в 12:57
поделиться

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

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

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

1
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: