Я пытаюсь использовать функцию буферизации вывода php для создания новой html-страницы после отправки пользовательской формы.
Я исследовал это здесь, и нашел помощь с этим ответом в другой теме …. https://stackoverflow.com/a/3775302/7637995.
Этот совет помог мне создать HTML-страницу на моем сервере.
Тем не менее, мне нужно сделать еще один шаг, и пока я не нашел способ сделать это.
Как я уже говорил … с помощью кода, предоставленного в этом ответе и встроенного в мою страницу PHP … я смог создать новую страницу HTML со всеми данными моей формы без изменений на моем сервере, установив «имя» html-страницы, чтобы «Mydocument» вроде так …
<?php ob_start(); ?>
/* My 'Form Page' Content Here */
<?php echo '';
file_put_contents('Mydocument.html', ob_get_contents());
?>.
Однако … вместо того, чтобы заранее называть одноразовую html-страницу, жестко кодируя ее каждый раз … Я хотел бы знать, возможно ли иметь саму форму, автоматически генерировать имя для новой целевой HTML-страницы каждый раз при отправке формы. Возможно, на основе входных данных из одного из полей текстовой формы.
В форме, например … У меня есть поле с именем «баннер». Текст, введенный в это поле, в конечном итоге становится заголовком статьи на html-странице.
Итак … Мне было интересно, могут ли данные в этом поле ‘banner’ также использоваться для автоматического создания ‘name’ для целевой html-страницы.
Поэтому вместо того, чтобы мне приходилось кодировать «имя» для целевой HTML-страницы, например; «Mydocument.html» (или что-то еще) … форма автоматически создаст имя для этой HTML-страницы при отправке.
Например … если мой заголовок (введенный в поле «баннер» формы)
«Гигантский астероид, чтобы ударить Землю»
К тому времени, когда генерируется код PHP, он может выглядеть примерно так …
<?php ob_start(); ?>
/* My 'Form Page' Content Here */
<?php echo '';
file_put_contents('Giant%Asteroid%To%Hit%Earth.html'
, ob_get_contents());
?>.
Если кто-нибудь может помочь мне с этим … это было бы очень ценно.
<?php
ob_start();
$headline=str_replace('.', '_', basename($_REQUEST['banner']));
?>
/* My 'Form Page' Content Here */
<?php echo '';
file_put_contents($headline . '.html'
, ob_get_contents());
Здесь следует отметить пару вещей: функция basename устраняет множество проблем с безопасностью. И я удалил лишнее закрытие ‘?>’
Других решений пока нет …