Скрипт рейтинга RatingIt

T7
На сайте с 12.01.2005
Offline
212
726

Сразу скажу, что тема уже есть такая: Скрипт рейтинга RatingIt, но форум не дает там ответить, считая, что тема старая.

Итак, купил данный скрипт, поставил. Все вроде работает. Но обнаружил одну неприятную особенность, для каждой новой странички скрипт, при обращении к странице создает в БД запись с пустыми данными. Т.е. даже если никто не голосовал. Все бы ничего, но если кто-то неправильно поставил ссылку, то создаются в БД записи, в поле ID (URL) вида: /dir/file1.phpUIRJF и т.п.

Решил сей момент исправить.

В файле _drawrating.php закомментировал сроки:

// insert the id in the DB if it doesn't exist already

// see: http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/#comment-121
if (mysql_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = mysql_query($sql);
}

А файл db.php переделал так:

$query = mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' ") or die(" Error: ".mysql_error());

if (!mysql_num_rows($query)) {
$result = mysql_query("INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id_sent', '0', '0', '')");
$query = mysql_query("SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' ") or die(" Error: ".mysql_error());
}

Но блин, нифига не работает! Если голосовать со странички, то не работает, если вызывать db.php в новом окне, то работает. Не пойму из-за чего.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1
Т.е. даже если никто не голосовал.

Так и должно быть.

но если кто-то неправильно поставил ссылку

Ваш сайт должен отдавать 404. Логично?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
T7
На сайте с 12.01.2005
Offline
212
#2
Так и должно быть.

Ну может быть. Хотя логики не вижу.

Ваш сайт должен отдавать 404. Логично?

Смотря какой запрос.

Ну к примеру применительно к вашему сайту, посмотрите что у вас в БД теперь:

http://yourcommentit.ru/articles/category/12/message/2445?hjghjhhg/

http://yourcommentit.ru/articles/category/12/message/2445?hjgh66jhhg/

http://yourcommentit.ru/articles/category/12/message/2445?hj5gh66jhhg/

А у меня на сайт по данным яндекса 50 тыс внешних ссылок. И не все из них правильные, где с какими-то параметрами проставлены (хотя у меня их нет), где с точками, где еще с чем-нибудь. Из-за чего в БД много хлама.

Но в общем то вопрос не в этом, просто инересно почему в файле db.php даже запись в файл не работает:

$fp=fopen("sql.log", "w+"); 

fputs($fp, "SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' \n");
fclose($fp);
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3
в файл не работает:

ну потому-что надо 21 век использовать.

http://php.net/manual/ru/function.file-put-contents.php


$log="SELECT total_votes, total_value, used_ips FROM $rating_dbname.$rating_tableName WHERE id='$id_sent' \n";
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/sql.log',$log,FILE_APPEND); //Файл sql.log лежит в корне

LEOnidUKG добавил 07.09.2011 в 12:59

Ну к примеру применительно к вашему сайту, посмотрите что у вас в БД теперь:

Всё правильно, у меня просто движок не выдаёт 404, но надо чтобы отдавал)))

T7
На сайте с 12.01.2005
Offline
212
#4

Да про file_put_contents это понятно, сейчас попробую, но думаю и он не будет ничего писать.

Да и кстати не вижу ничего такого в коде с использованием fputs. Он то работоспособный вполне.

tolik777 добавил 07.09.2011 в 13:23

Проверил file_put_contents, то же самое не работает и ничего в файл не пишет

tolik777 добавил 07.09.2011 в 13:26

Я про то, что когда нажимаю рейтинг со страницы - не работает, а когда копирую ссылку и открываю в окне браузера, то работает.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий