Совершенствуем альтернативу eval в php
Суббота, Апрель 10, 2010 12:15Недавно в посте Альтернатива eval() в php я рассказывал, как можно не используя саму функцию eval() выполнить код содержащийся в переменной. Напомню, что функция eval() обычно не используется в стандартном программировании, ее обычно юзают, когда в закрытом интерфейсе, это например php нужно выполнить код содержащийся в переменной. Если вы имели дело с ассемблером, то там чтобы выполнить код из переменной нужно всего лишь передать управление на нее, а в конце самого кода передать управление тому участку кода, от куда ее собственно и вызывали. Вот такие преимущества дает ассемблер программисту, в отличие от языков высокого уровна, типа C++, в котором нужно подумать уже как выполнить код.
Что-то я сильно отвлекся. Значит я усовершенствую функцию alt_eval() описаную в посте Альтернатива eval() в php. Самое главное, что нужно, это уберечь функцию от ошибок. Для примера, программист забыл заключить код в теги php, ну значит мы ему поможем.
< ?php
function alt_eval($code, $bool){
$hdl = fopen(‘qswdefrgthyjuk.php’, ‘w’);//Открываем файл
if($bool==1){
$code = ‘<?php’.$code.’?>’;
}
fwrite($hdl, $code);//Записываем в него код
fclose($hdl);//Закрываем
include(‘qswdefrgthyjuk.php’);//Вставляем на выполнение
}
?>
Ну и наверное нужно удалить файл, который нам был нужен.
< ?php
function alt_eval($code, $bool){
$hdl = fopen(‘qswdefrgthyjuk.php’, ‘w’);//Открываем файл
if($bool==1){
$code = ‘<?php’.$code.’?>’;
}
fwrite($hdl, $code);//Записываем в него код
fclose($hdl);//Закрываем
include(‘qswdefrgthyjuk.php’);//Вставляем на выполнение
unlink(‘qswdefrgthyjuk.php’);
}
?>
Вот и усе, теперь функция более надежная.
Другие записи по теме: