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

Тема в разделе "PHP", создана пользователем Jaarg, 12 май 2011.

Модераторы: latteo
  1. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    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?
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    указать куда отсылать данные можно в атрибуте 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']);
     
    Jaarg нравится это.
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    немного дополню:

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

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    Да, перепутал в сообщении 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']); 
    ?>
    не совсем понял в чем дополнение - в таргет бланк?
     
  5. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    попробуй записывать в форму не <? echo "test"; ?> а echo "test";
    у тебя и так пхп обрабатывает скрипт!
     
    Jaarg нравится это.
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    для 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);
    ?>
     
    Jaarg нравится это.
  7. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    при вводе
    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
  8. MegafonUral

    MegafonUral Прохожие

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

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    да, это + вышесказанное даровало работоспособность скрипту!
    благодарю, можно закрывать :)
     
  10. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    Если хочется исполнить такое, то есть с <? ?>
    PHP:
    <? echo "test"?> 
    то в евале нужно юзать примерно такое

    PHP:
    eval('?>'.$php)