За последние 24 часа нас посетили 36434 программиста и 1300 роботов. Сейчас ищут 913 программистов ...

php+html внутри <textarea>

Тема в разделе "PHP для новичков", создана пользователем Freakmeister, 19 май 2011.

  1. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Надо сделать чтение и запись файла через форму. Проблема в том, что файл - php и внутри него хратится код. Как этот файл корректно открыть в <textarea> и потом корректно сохранить, чтобы на выходе не получалось всяких html-пригодных крюкозябер? Битый час ковыряю себе мозг, но так ни к чему и не пришёл...
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    ответ не дам лучше сначала спрошу:

    почему именно в файл? почему не бд?
     
  3. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    PHP:
    1. <?php
    2.  
    3. # php - саморедактор
    4.  
    5. $redfile = basename(__FILE__);
    6.  
    7. if (isset($_POST["phpfile"])) {
    8.     $FP=fopen($redfile,"w");fwrite($FP,$_POST["phpfile"]);fclose($FP);
    9.     header("location: $redfile");
    10.     exit;
    11. }
    12. print 'привет, замените эту запись на свою и нажмите сохранить';
    13.  
    14. ?>
    15. <html>
    16. <form action="<?php echo $redfile;?>" method="POST">
    17. <textarea cols="60" rows="20" name="phpfile">
    18. <?php print $cont; ?>
    19. </textarea><P>
    20. <input type="submit" value="сохранить">
    21. </form>
    22.  
    файл сам себя редактирует.

    ВНИМАНИЕ нужны права на перезапись в LINUX системах
    удалите файл после использования, ибо небезопасно его хранить.
     
  4. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Сам задавал себе этот вопрос, но не я автор движка, к сожалению.
     
  5. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Alex_pac, этот вариант работает на половину. В <textarea> файл открывается в пригодном виде, а вот записывается всё-равно в таком:

    PHP:
    1. <?php<br /><br />if (!defined(\"IN_MKP\")) {<br />    die (\"Sorry !! You cannot access this file directly.\");<br />}<br /><br />global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board;<br />$mlink=\"index.php?ind=pages\";<br /><br />if ($mkportals->input[\'op\'] == \"\") {                        // NNN �����<br /><br />$id=$mkportals->member[\'id\'];<br />switch($id) {<br /><br />case \'23\':  /* TIXOH 228 */<br />$DB->query(\"SELECT content FROM mkp_pages WHERE id=11\");<br />        while( $row = $DB->fetch_row($query) ) {<br />                $cont = $row[\'content\'];<br />        }<br />break;<br /><br />case \'23\':  /* despa 306 */<br />$DB->query(\"SELECT content FROM mkp_pages WHERE id=9\");<br />        while( $row = $DB->fetch_row($query) ) {<br />                $cont = $row[\'content\'];<br />    
     
  6. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    это мой который?
    проверьте права доступа на файл
     
  7. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Не-не, не в правах дело. Я тестил на локальном компе. Оно записывает, но в таком виде, в котором я написал выше.
     
  8. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    потому что где-то настроено ещё одно экранирование символов.
    судя по тому, что это движок, то делается это где-то на уровне обработки запроса в ядре движка.
     
  9. Freakmeister

    Freakmeister Активный пользователь

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Ну я же не пользуюсь функциями движка при сохранении файла, я использую чистый php. А как сделать де-экранизацию текста? Попробую прикрутить прямо перед сохранением.
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Freakmeister
    тогда что-то у тебя не то - у всех нормально, а у тебя не работает. смотри настройки php