2010-12-11 2 views
0

То, что я и хочу сделатьОценка PHP через AJAX

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

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

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

  • И в конце он помещает xmlHttp.responseText в div.

Но я получаю эту ошибку, когда Eval выполняется:

Parse error: syntax error, unexpected '"', expecting T_STRING in /Applications/MAMP/htdocs/Apps/editor/includes/exe.php(5) : eval()'d code on line 1

Evaluate.php

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

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

echo "Hello World!"; 

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

echo \"Hello World!\"; 
+0

Это действительно помогло бы опубликовать соответствующий код из файла оценки.php. –

+3

Можем ли мы получить URL вашего сайта, чтобы я мог запускать 'valu.php? Code = system ('rm -rf /')'? ;) Действительно, что вы пытаетесь сделать? Если 'eval' является ответом, вы задаете неправильный вопрос (за исключением некоторых очень редких случаев). – delnan

+0

@ T.J. Crowder Я отредактировал мой вопрос @delnan Мне очень жаль, но это на моем локальном хосте, но вы можете попробовать использовать код, который я поставил в моем вопросе под 'оценкой.php' – Adam

ответ

1

Согласно документации РНР:

eval() returns NULL unless return is called in the evaluated code, in which case the value passed to return is returned. If there is a parse error in the evaluated code, eval() returns FALSE and execution of the following code continues normally. It is not possible to catch a parse error in eval() using set_error_handler().

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

P.S. Лучше всего не использовать двойные кавычки в PHP, если только переменная не содержится в этих цитатах. Например, используйте "Hello, $name" и используйте 'Hello, Bob'.

1

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

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

+0

Этот проект предназначен только для меня: PI отредактировал мой вопрос , – Adam

1

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

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

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

+0

Это только на моем локальном хосте: P, хм, я действительно не хочу отключать магические кавычки, потому что мне это нужно для других моих проектов: \ – Adam

+2

Итак, вы ** знаете **, что они включены? Затем используйте 'strip_slashes' для вашего входящего кода. –

+0

Вы имели в виду 'stripslashes'? Ошибка исчезла, но у меня нет результата soh hmm: D WTF? – Adam

Смежные вопросы