Итак, я создаю простой онлайн-редактор php-кода для школьного проекта.Мы решили сделать это сами, а не использовать такую библиотеку, как codemirror.
Так что в основном у нас есть большая текстовая область, куда вы помещаете свой код, который затем отправляется в другой файл php, который выполняет код с использованием php Eval() функция.Но по какой-то причине он продолжает выдавать ошибки POST, когда мы пытаемся отправить что-то вроде: Echo, While, If.(Ошибка: 500)
Простые вещи, такие как: 2 + 4, хорошо выполнить (вывод: 6).
Итак, первый вопрос: можно ли вообще выполнить php?код, который мы хотим использовать с помощью Eval ()?
Вторым будет: есть ли другой способ сделать то, что мы хотим?если да, пожалуйста, предоставьте дополнительную информацию / код.
Наш текущий код:
editor.php
<textarea id="area" cols="70" rows="30"></textarea>
<button id="submit">Submit</button>
<script>
$('#submit').click(function (e) {
e.preventDefault();
var info = $('#area').val();
$.ajax({
type: "POST",
url: 'pages/assignments/response.php',
data: {area: info},
success: function (response) {
console.log(response);
}
});
});
</script>
Response.php
<?php
if (!empty($_POST['area'])) {
runEval($_POST['area']);
};
function runEval($data)
{
// $data = preg_replace('/\s+/', '', $data); doesn't seem to work at all with it)
$characters = '[a-zA-Z0-9]*';
$functions = '';
$operators = '[\w-><$(){}|_+=":;!&*%$]';
$regexp = '/^((' . $characters . '|' . $functions . '\s*\((?1)+\)|\((?1)+\))(?:' . $operators . '(?2))?)+/'; /*honestly we have no idea what it does, because we copied it and changed the $characters,$functions,$operators*/
if (preg_match($regexp, $data)) {
eval('$result = ' . $data . ';');
echo $result;
} else {
$data = false;
}
}
?>