2016-07-14 3 views
0

Я пытаюсь найти решение для выпадания и в PHP динамически. Причина. Я хочу, чтобы скрипт генерировал простой PHP-код. и сохраняют возможность выполнения кода.PHP - Динамическое падение в/из PHP?

Следующий оператор работает нормально:

<? 
    if ($statement == true) { 
     ?>echo "hello";<? 
    } else { 
     echo "hello"; 
    } 
?> 

Я хотел бы, чтобы предотвратить двойную работу. Очевидно, что следующее приведет к ошибке, но мне интересно, есть ли другой способ сделать именно то, что мне нужно сделать?

<? if ($statement == true) { ?> } echo "hello"; { <? } ?> 
+1

да, я не получаю ваш вопрос, если вам нужно 'эхо«Hello»;' в обоих случаях, то почему есть если условие? - И я с трудом верю, что ваше первое if-предложение работает, поскольку эхо внутри него не завернуто в теги php. – Epodax

+0

Я думаю, что он пытается отозвать «привет» в случае secnod, но эхо «эхо» привет »; в первом: показать код, который производит вывод. eval() приходит на ум. – Majiy

+0

'readfile (__ FILE__); die(); ' –

ответ

0

Вы можете использовать функцию eval(). Он способен разобрать строку и выполнить любой код, содержащийся PHP:

<?php 
    $code = 'echo "hello";'; 
    if($statement) 
     echo $code; //print 
    else 
     eval($code); // execute 
?> 

По соображениям безопасности вы должны проверить сгенерированный код, особенно если он содержит пользовательский ввод.

0

Я знаю, что некоторые люди скажут, что это ужасный ответ, и что вы никогда не должны использовать eval, но если он используется правильно (не работает пользовательский код), он безопасен.

Я предлагаю посмотреть на функцию eval php. вы можете заставить его выполнить код в строке.

Так что-то подобное будет работать:

$code = 'echo "hello";'; 
if($statement == true) 
    $code = "?>".$code."<?php"; 
eval($code); 
Смежные вопросы