Это да, но что из этого следует?Для начала, eval() - это ф-ция, а include() - языковая конструкция
гм.Не работает, как ожидается с переменными и конструкциями (break, continue, globals)
while(1) {
eval('break;');
}
eval('while(1) { echo "ok"; break; }');
for( $a = 0; $a < 5; $a++ )
{
eval( 'break;' );
}
for( $a = 0; $a < 5; $a++ )
{
{
break;
}
}
Проблема безопасности: в eval передается переменная. Если ты ее еще и строишь, основываясь на внешних данных - капец тебе Мне извесны люди, которые пишут код и оставляют после себя такие backdoor (для контроля оплаты).
А использование eval() для создания бэкдора - это ход, Плохой код можно написать и как с include так и с eval
использование переменных в имени файла - точно такой же backdoor
while(1) {
eval('break 2;');
}
а то, ты не знаешь как ее используют некоторые генииOriginally posted by young
И если таки нет то почему include все используют а eval все ругают?
Ругают при неумелом использовании..Originally posted by young
И если таки нет то почему include все используют а eval все ругают?
// в области класса инициализируем подключаемый модуль
$succes = eval('return '.$mod_name.'::init();');
Это меня и интересовало.Разница между eval и include/require в том, что в первом случае компилируется строка, а во втором = файл, имя файла сохраняется в хеше (для include|require[_once]). Опкод один и тот же
1.phpАвтор оригинала: Oleg Marchuk
[strike]Вечный цикл[/strike] Фатал:
PHP:while(1)eval('break;');
<?while(1)include '2.php';?>
<?break;?>