Xpoint
   [напомнить пароль]

Скрипт оценок или как правельно спросить у дяди Гугла

Метки: [без меток]
[удл]
2010-04-20 23:07:11 [обр] Andrej[досье]

Провел около часа в поисках php скрипта, который способен показывать оценку нужных мне объектов, имеющий защиту от накруток (IP), и главное работающий на файлах (без баз данных).
В итоге ничего не нашел.

Необходимо что-то такое:
Вывод оценки - только цифру:
<?php $rater_id=tst; include("rater.php"); ?>

Голосование так:
rater.php?rate_id=tst&rate=5

Возможно у кого-то есть свои наброски или кто-то готов поделиться сайтами с похожим скриптом?
Буду очень вам благодарен.

P.S. визуальная оболочка ненужна, скрипт будет встраиваться в собственную ajax оболочку.

спустя 1 час 13 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]
За час можно было бы и самому написать, ничего сложного не вижу.
спустя 33 минуты [обр] Andrej[досье]
Я новичек в PHP.
спустя 1 минуту [обр] Andrej[досье]
Топик хотел разместить в раздел PHP, переместите пожалуйста его туда.
спустя 32 минуты [обр] Евгений Седов aka KPbIC(7/176)[досье]

Вам нужно сохранить в файле количество голосов и сумму балов. Оценка = сумма_балов, деленная на количество голосов. Дальше сами решайте как вы будете округлять и в каком формате выводить. С IP-адресами определите логику — что считается накруткой, что нет, и как поступить, если имеет место накрутка: просто не учитывать голос, учитывать первые сколько-то, выдать юзеру злобное ругательство, и т.п.

Начните, а там видно будет. Задача несложная, потренеруетесь.

спустя 9 часов [обр] Andrej[досье]
сообщение промодерировано

Ну хорошо, поехали.
Все у нас будет храниться в 2 файлах.
Первый rate.txt
ид;оценка;количество голосов
Второй файл ban.txt
ид;ip

//Собираем нужные нам данные, возможно так не безопасно делать, поправьте пожалуйста.
$idrater = $_POST["idrater"];
$vote = $_POST["vote"];
$rater_ip = getenv("REMOTE_ADDR"); 

//Открываем наши два файла и записываем содержимое в переменную.
$file_rate = fopen("rate.txt","r+");
if(!file_rate){echo("Ошибка открытия файла");}
$file_ban = fopen("ban.txt","r+");
if(!file_ban){echo("Ошибка открытия файла");}

Далее не понимаю как лучше и правильно задействовать цикл, тоесть нужно пройтись по ban.txt всем строчкам.

$i = 0;
while ($i <= Последняя_строчька_файла) {
$rater=explode(";",$line); //разбиваем строчку
if ($rater[0] == $idrater && $rater[0] == $rater_ip){
echo 'вы уже голосовали';
}

Далее не знаю как сделать условие если в файле нет, ip с нужным $rater[0], то добавляем в файл ban.txt строчку с id;ip
и проводим цикл в rate.txt

$votes=explode(";",$line); //разбиваем строчку
if ($votes[0] == $idrater){
//Работаем с строчкой, нужно сделать $votes[2]+1 (количество оценок) и высчитать в $votes[1] новую оценку.

в конце выводим ее
echo $votes[1];

}


$i++;
}

Все что знал написал. С другим трудности...

спустя 40 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]

Я бы, наверное, для каждого голосования завел свой файл, и обязательно обработал пользовательские данные, вдруг придет рейтинг +1000 или -1000.

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

http://xpoint.ru/help/formatting.xhtml

спустя 13 минут [обр] Andrej[досье]
сообщение промодерировано
Я бы, наверное, для каждого голосования завел свой файл,

Понимаете таких <?php $rater_id=tst; include("rater.php"); ?> будет около 11 на странице, тоесть если rater.php будет вызываться 11 раз и каждый раз обращаться к большому количеству файлов это будет больше нагрузка на сервер, чем открыть 1 файл и в нем найти нужные данне.

Всего голосований будет около 700.

Про бан. - оценку каждому голосованию можно поставить только один раз - с одного IP

спустя 9 минут [обр] Andrej[досье]
 KPbIC, предложите лучше ссылки с какими-то готовыми решениями, мне в них будет проще разобраться чем писать с нуля.
спустя 5 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]
спустя 3 минуты [обр] Евгений Седов aka KPbIC(7/176)[досье]
+ votes pool rating
спустя 1 час 3 минуты [обр] Andrej[досье]
нету
спустя 7 часов [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
Топик хотел разместить в раздел PHP, переместите пожалуйста его туда.
Причем тут PHP то? Это в алгоритмы...
спустя 21 час [обр] Алексей Севрюков(162/1280)[досье]
М Перенесено из форума "Программирование::Perl::Основы"
спустя 4 часа 46 минут [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
Алексей Севрюков[досье]
мде..
спустя 12 часов [обр] Алексей Севрюков(162/1280)[досье]
Dennis F. Latypoff aka funky_dennis[досье] я не вижу тут ничего, относящегося к теории и алгоритмам. Автор уже фактически целиком написал код (и в нем уже прослеживается правильный алгоритм) и помощи просит с кодом PHP.
спустя 9 часов [обр] Dennis F. Latypoff aka funky_dennis(4/78)[досье]
Алексей Севрюков[досье]
Блин, ну PHP просто отлично документирован, информации - просто завались, интернет просто кишит инфой по PHP.
Ман ему в руки.
Powered by POEM™ Engine Copyright © 2002-2005