Оцените PHP через AJAX - PullRequest
       9

Оцените PHP через AJAX

0 голосов
/ 11 декабря 2010

Что я хочу и хочу сделать

  • У меня есть input area.

  • У меня есть JS-скрипт, который читает input area innerHTML и кодирует его, используя encodeURICompontent, а затем отправляет значение в evaluate.php?code=+value;

  • У меня есть evaluate.php, что GET является значением code из URL, и возвращает оцененное значение, используя eval($code) в javascript.

  • И в конце он ставит xmlHttp.responseText в div.

Но я получаю эту ошибку при выполнении eval:

Ошибка разбора: синтаксическая ошибка, неожиданное '"', ожидание T_STRING в /Applications/MAMP/htdocs/Apps/editor/includes/exe.php(5): eval () 'd код в строке 1

Evaluate.php

if(isset($_GET["code"])){
    $e = $_GET["code"];
    echo eval($e);
}

Значение, которое я пытаюсь оценить, просто:

echo "Hello World!";

Тогда это выглядит как $_GET["code"] как:

echo \"Hello World!\";

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

Я чувствую себя ужасно, отвечая на это.В ваших настройках PHP может быть включен magic_quotes_gpc, который «повреждает» ваши входящие данные, экранируя их.

Для того, чтобы заставить это работать, вы можете захотеть добавить немного больше безопасности для своего предприятия, отключив магиюкавычки.

Если это не помогает, отладьте ввод, следуя советам Silver Light.

1 голос
/ 11 декабря 2010

В соответствии с документацией PHP:

eval () возвращает NULL, если в обработанном коде не вызывается return, и в этом случае возвращается значение, переданное в return.Если в обработанном коде есть ошибка разбора, eval () возвращает FALSE, и выполнение следующего кода продолжается нормально.Невозможно отловить ошибку синтаксического анализа в eval () с помощью set_error_handler ().

Так что я думаю, что может быть проблема при запуске echo eval($e).

PS ЭтоРекомендуется не использовать двойные кавычки в PHP, если в этих кавычках не содержится переменная.Например, используйте "Hello, $name" и 'Hello, Bob'.

1 голос
/ 11 декабря 2010

Очевидно, у вас есть ошибка в строке, которую вы пытаетесь оценить. Попробуйте сначала вывести его и посмотрите, есть ли в нем полуколонны и тому подобное.

Но вы никогда не должны (!) Оценивать код, полученный по URL! Никогда-никогда никто не может отправить exec ('rm -rf /')".

...