Выполнение php из формы

Jaarg

Гуру форума
Регистрация
18 Авг 2008
Сообщения
494
Реакции
97
Приветствую.
Есть 2 файла 1.php и 2.php

В файле 1.php размещена форма

PHP:
<form action="1.php" method="post">
<textarea name="php" cols="100" rows="10"></textarea>
<input type="submit" name="ok" value="Далее">
</form>
Что нужно для того, что бы я мог в этой форме написать, к примеру:
PHP:
<? echo "test"; ?>
Нажать далее и это дело было бы выполнено в 2.php?
 
указать куда отсылать данные можно в атрибуте action, если на 2.php то
HTML:
<form action="2.php" method="post">
<textarea name="php" cols="100" rows="10"></textarea>
<input type="submit" name="ok" value="Далее">
</form>
а в файле 2.php выполняeм полученный код
PHP:
eval($_POST['php']);
 
немного дополню:

HTML:
<form action="2.php" method="post" target="_blank">
<textarea name="php" cols="100" rows="10"></textarea>
<input type="submit" name="ok" value="Далее">
</form>
 
указать куда отсылать данные можно в атрибуте action, если на 2.php то
HTML:
<form action="2.php" method="post">
<textarea name="php" cols="100" rows="10"></textarea>
<input type="submit" name="ok" value="Далее">
</form>
а в файле 2.php выполняeм полученный код
PHP:
eval($_POST['php']);

Да, перепутал в сообщении 1 и 2 php в action :pioner:
Вставил
PHP:
eval($_POST['php']);
но получаю ошибку
Parse error: syntax error, unexpected '<' in Z:\home\localhost\www\2.php(2) : eval()'d code on line 1

содержимое файла:
PHP:
<?php
eval($_POST['php']); 
?>
немного дополню:

HTML:
<form action="2.php" method="post" target="_blank">
<textarea name="php" cols="100" rows="10"></textarea>
<input type="submit" name="ok" value="Далее">
</form>

не совсем понял в чем дополнение - в таргет бланк?
 
для eval не нужны теги php скрипта <? ?> , там и так уже ясно что только php, или можно удалять их перед выполнением скрипта
PHP:
<?php
$php = $_POST['php'];
$php = preg_replace('/^\s*<\?php/is', '', $php);
$php = preg_replace('/^\s*<\?/is', '', $php);
$php = preg_replace('/\?>\s*$/is', '', $php);
eval($php);
?>
 
при вводе
PHP:
echo "test";
получаю ошибку:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in Z:\home\localhost\www\2.php(6) : eval()'d code on line 1

Parse error: syntax error, unexpected $end in Z:\home\localhost\www\2.php(6) : eval()'d code on line 1


Тестирую это все на денвере.

В аттаче файлы, может быть я там что то накосячил?
 

Вложения

  • 12.zip
    618 байт · Просмотры: 4
при вводе
PHP:
echo "test";
получаю ошибку:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in Z:\home\localhost\www\2.php(6) : eval()'d code on line 1
Parse error: syntax error, unexpected $end in Z:\home\localhost\www\2.php(6) : eval()'d code on line 1

перед тем как делать eval() пропусти код через stripslashes:
PHP:
$php = stripslashes($_POST['php']);
eval($php);

у тебя видимо включена опция magic_quotes_gpc в php.ini и кавычки автоматически экранируются, т.е. в $_POST['php'] приходит такое: echo \"test\";
 
перед тем как делать eval() пропусти код через stripslashes:
PHP:
$php = stripslashes($_POST['php']);
eval($php);
у тебя видимо включена опция magic_quotes_gpc в php.ini и кавычки автоматически экранируются, т.е. в $_POST['php'] приходит такое: echo \"test\";

да, это + вышесказанное даровало работоспособность скрипту!
благодарю, можно закрывать :)
 
Если хочется исполнить такое, то есть с <? ?>
PHP:
<? echo "test"; ?>

то в евале нужно юзать примерно такое

PHP:
eval('?>'.$php)
 
Назад
Сверху