Скрипт называется "просмотр логов".
Помню когда-то давно делал рейтинг игровых серверов,
тогда была придумана такая система:
Приходит посетитель на сайт и видет рейтинг с возможностью оставить свой голос
кликает проголосовать (ему ставится уникальная кука)
ему выводится сообщение, что его голос НЕ УЧТЕН, и он будет учтен только ЗАВТРА при повторном голосовании (делается для защиты от накручивания)
посетитель возвращается на следующий день, голосует, скрипт проверяет куку, если есть - защитываем голос, если нет - выводим сообщение с просьбой вернуться завтра и проголосовать.
Таким образом учитывался только 1 голос с 1 браузера в сутки.
В целом эффективно для постоянных пользователей сайта. Если же посетители не имеют привычки возвращаться на сайт, система не подойдет.
Также есть возможность обхода системы, в случае использования плагина к кукам для браузера, которым можно сохранить 10-100-1000 уникальных кук, которые мы выдадим, и на следующий день с этими куками проголосовать и все голоса зачтуцца ))
Короче говоря, идеального решения нет.
я думаю, если человек не хочет, чтобы его регистрация защиталась партнеру, то он удалит из ссылки ?pid=12345, и тогда никакие средства не помогут его спалить )) Так что о куках можно не заморачиваться. Если человек захочет, он обойдет любую защиту.
Я думаю как и везде в ссылку добавляется параметр htttp://site.ru/?pid=12345
сайт обрабатывая запрос и видя что перешли по "реферальской ссылке" следит за тем зарегается ли этот посетитель в конце концов. Как следит? Конечно же кукой/сессией.
это запрос корня сайта.
Tempter добавил 15.01.2010 в 11:03
т.е. главной страницы )))
Могу посоветовать ресурс: http://htmlbook.ru если сами еще не нашли.
Видимо решения нет ((
SELECT * FROM country as country LEFT JOIN base_ as base_ ON base_.country = country.id WHERE base_.show = 1 ORDER BY base_.rating DESC, country.title LIMIT 20
Tempter добавил 25.12.2009 в 17:03
Хотя. наверно не сработает
и отсортировать придется в коде PHP
Я не уверен в какой таблице находится поле "show", если в таблице с рейтингами то так:
SELECT id_country FROM table_country as tc LEFT JOIN table_rating_country as trc ON trc.id_country = tc.id_country WHERE tc.show = 1 ORDER BY trc.rating DESC LIMIT 20
если в таблице с странами то вместа trc.show надо написать tc.show
Какой-то бред
почему нельзя так:
SELECT * FROM base WHERE show = 1 ORDER BY rating DESC, country LIMIT 20