Отображать выходные данные в моей форме, чтобы я мог редактировать

Как я могу отобразить выведенные данные (contents.html) для ввода в текстовое поле моей формы (edit.html). Я использую редактор JS HTML WYSIWYG (TinyMCE) на странице формы, чтобы людям, не имеющим опыта работы с HTML, было проще вносить изменения.

(я знаю о XSS-атаках, но я просто хотел бы, чтобы это работало на данный момент.) Я пробовал эхо, но это не сработает, кто-нибудь знает, как я могу этого добиться?

С уважением

edit.php // Отправляет данные формы в content.html

<?php file_put_contents("content.html", print_r($_POST['content'], true)); ?>
<form method="post">
<textarea name="content" style="width:960px; margin: 0 auto;" rows="20" cols="20">


</textarea>
<input type="submit" name="save" value="Submit" />
</form>

contents.html

// Пусто, пока что-то не будет отправлено с формой

index.php

// Извлекает данные из содержимого.html и отображает их

<?php echo file_get_contents('content.html');?>

person tom    schedule 09.12.2010    source источник
comment
Вы уверены, что он действительно записывается в этот файл? И правильный ли путь при вызове file_get_contents?   -  person profitphp    schedule 10.12.2010
comment
когда я захожу на content.html, он записывается там, а когда я захожу в index.php, он также отображается в этом файле. Я просто хочу иметь возможность отображать его в данных, которые я ввел в текстовую область формы, чтобы я мог редактировать, а не перезаписывать   -  person tom    schedule 10.12.2010


Ответы (1)


Просто напечатайте содержимое текстового поля, после его экранирования. Это предотвратит XSS в вашей форме (edit.php) и приведет к правильному отображению содержимого HTML.

Оператор if проверяет, была ли форма отправлена ​​или нет. Если это правда, содержимое из $_POST['content'] будет записано в content.html. Примечание. isset($_POST['save']) и name="save" необязательны для проверки того, была ли форма отправлена ​​или нет, но если у вас есть несколько вариантов отправки (например, кнопка предварительного просмотра), это обязательно.

<?php
if(isset($_POST['save']) && filter_has_var(INPUT_POST, 'content')){
    file_put_contents("content.html", filter_input(INPUT_POST, 'content'));
}
?>

<form method="post">
<textarea name="content" style="width:960px; margin: 0 auto;" rows="20" cols="20"><?php
echo htmlentities(file_get_contents("content.html"));
?></textarea>
<input type="submit" name="save" value="Submit" />
</form>
person Lekensteyn    schedule 09.12.2010
comment
Когда я нажимаю «Отправить», он отображает содержимое, но если я перезагружу страницу, эти данные исчезнут. Я не уверен, что эта проблема вызвана оператором PHP над формой. - person tom; 10.12.2010
comment
Да, это было. Пожалуйста, посмотрите на мой ответ еще раз. - person Lekensteyn; 10.12.2010