Вообще не грамотно составленный скрипт, так как для всех чисел, особенно подставляемых в склейку MySQL запроса, нужно использовать как минимум intval(), а еще лучше пользоваться приведением типов и приводить к числу.
Теперь вкратце по самому скрипту.
PHP код:
if ($type == 2)
{
$count = $top_bonus['count_sms'];
}
else
{
$count = $top_bonus['count_site'];
}
Не смог проследить переменную $top_bonus, она видимо находится в config/config.php, импортируемый почти в самом начале. Но в любом случае я бы сделал как минимум вот так:
PHP код:
if ($type == 2)
{
$count = (int)$top_bonus['count_sms'];
}
else
{
$count = (int)$top_bonus['count_site'];
}
Но если есть 100% уверенность, что $top_bonus['count_sms'] и $top_bonus['count_site'] - числа, то в принципе можно оставить все как есть в этом куске кода.
Но есть еще более опасный момент вот с этим запросом:
PHP код:
$sql = mysql_query("SELECT * FROM `top_vote` WHERE `name` = '".$player."' AND `time` = '".$date."';");
Через переменную $date можно провести SQL инъекцию, если попадется недобросовестный топ серверов или просто будет подменена ссылка на список проголосовавших. Почему? Сейчас объясню. Разберемся с происхождением ссылки (выстрою ввиде кода с комментариями):
PHP код:
//читаем файл $topfile и записываем каждую его строчку в массив
$file = file($topfile);
//каждую строку рассматриваем отдельно
foreach ($file as $line)
{
//режем строку по табу
$parts = explode("\t", $line);
//расфасовываем куски строки по переменным
$date = $parts[1]; //но ведь не факт, что тут будет число, а вдруг недоброжелатель подставит тут кусок SQL запроса?
$name = $parts[3]; //тут тоже не известно, что будет, поэтому лучше фильтровать получаемые данные или проверять (и то, и то можно сделать, например, при помощи регулярок)
$type = $parts[4]; //аналогично
}
Ну, хотя, если данный скрипт предназначен для топов типа L2Top или MMOTop, то SQL инъекцию врятли кто-то будет внедрять через этот файл, но иногда сайт топа может не загрузиться этим скриптом и тогда в переменной $file окажутся ошибки со страницы.