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

Как реализовать подобное самому?

В идеале рейтинг при клике на like должен увеличиваться не на единицу, а на некий коэффициент, который рассчитывается исходя из кармы пользователя. История с 5 звездочками и средней оценкой тоже весьма неоднозначна. Материал с 1-ой оценкой 5 звезд, будет выше материала с 5-ю оценками (55554), что разумеется не правильно.

 

Но мы же только начинаем свой путь, поэтому проще всего сделать как-нибудь, а уже потом придумывать сложные алгоритмы.

Краеугольным камнем тут будет безопасность и валидность таких рейтингов. Нужно чтобы накрутить его было, как минимум сложно. Запоминание в cookie боюсь нас не спасет. Куки легко затереть, кроме того у каждого порядочного пользователя на компьютере установлено как минимум 2 браузера: тру-браузер (Опера, Хром, Мозила) и пред-установленный IE. Так что вот уже два голоса, которые достаются материалу. Чтобы этой обойти, можно использовать ip адрес. С которым тоже не все просто. К примеру если у вас сайт для Вашего общежития, то скорее всего у всех участников голосования будет один ip адрес. Как вариант писать данные о голосовании в localStorage браузера. Пока пользователи не настолько опытны, и мало кто знает про это хранилище. Еще один из вариантов, запоминать все службные характеристики проголосовавшего: user_agent, разрешение экрана, операционная система, установленные плагины и расширения (Хром раньше позволял почекать наличие некоторых расширений, сейчас не знаю) а также кучу сопутствующей информации. Специалисты говорят, что если анализировать поведение пользователя по движению его мыши то его можно также однозначно идентифицировать.

Применяя все эти методы в совокупности, нельзя однозначно определить, что пользователь является уникальным, но можно делать какие-то суммарные выводы.

К примеру: сайт сделан для общежития, и 90% запросов идут с одного ip адреса. Значит анализируем дополнительные данные. Блокировать пользователя чревато, но можно его слегка притормозить. Даем ему пару минут бана, потом включаем вновь.

Или сайт для более широкой аудитории, но запросы все же приходят с одного ip, тогда собранная дополнительная информация может повлиять на решение системы об учитывании присланных голосов. Один из интересных вариантов решения: учитывать все голоса, накручивать счетчик на каждый чих, но при это запоминать всю сопутствующую полезную информацию. Спамер счастлив. Идет пить чай. А раз в час наша система запускает анализатор, который принимает решение о валидности того или иного голоса. Так можно бороться с тестерами, ведь проверить сработал тот или иной способ накрутки они смогут лишь раз в час. Это их здорово притормозит.  

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

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

Оставлять комментарии могут только зарегистрированные пользователи