PHP: $vars = array('skip', 'page', 'cpage', 'action', 'id', 'ucat', 'category', 'number', 'template', 'static', 'year', 'month', 'day', 'title', 'sort', 'user', 'author', 'time', 'link', 'tpl'); foreach ($vars as $k => $v){ $$k = @htmlspecialchars($v); } прошу объясните что это делает?
Нихера он не делает. Но задумка была такая: цикл по массиву значений проходит и из строк делает переменные. Код должен выглядить так: PHP: <?php $vars = array('skip', 'page', 'cpage', 'action', 'id', 'ucat', 'category', 'number', 'template', 'static', 'year', 'month', 'day', 'title', 'sort', 'user', 'author', 'time', 'link', 'tpl'); foreach ($vars as $v){ $$v = @htmlspecialchars($$v); } Т.е. из строки skip делаем переменную $skip и присваиваем ей значение из переменной $skip при этом экранизируя html. Потом page и т.д.
lexa, т.е. в моем случае берется значение к и создается переменное, так как значение к 0, 1, 2...... и такое переменное задать нельзя, я правильно понял или нет? код взята strawberry(cutenews) http://strawberry.goodgirl.ru, а зачем они такую ошибку допустили?
sey, правильно. А ошибку такую допустили потому что автор мудак. И автор оригинала - CuteNews - тоже. До кучи. Пользуй лучше 2z как альтернативу клубники. Идейно тоже (новостной скрипт + плагины), но плюшек больше. Хотя текстовую базу народ из 2z не поддерживают пока, но имеют в планах, как и SQLite (тоже текстовая база, по сути). P.S. На безопасности этот мудацкий код, кстати, не отражается, потому что: 1) $_GET слешится; 2) обёртке для БД слэшей достаточно, т.к. она идёт через $sql->метод(array(данные)) и мускульный класс там дополнительно свои специальные mysql_real_escape_string() ставит.
Уши не горят и нормально. К тому же, от души поругал ведь там много всего на что смотреть без слёз сложно. Взять хотя бы код, который автор топика привёл. Это я сейчас могу много чего в голове держать и заранее знаю, где кака, где неплохо, а к чему можно долго не возвращаться. Раньше же у мну всё было "потрясающе" и "гениально".