【发布时间】:2017-07-20 02:20:49
【问题描述】:
我正在尝试使用 php 输出缓冲功能在用户表单提交后创建一个新的 html 页面。
我在这里进行了研究,并在另一个线程上找到了有关此答案的帮助....https://stackoverflow.com/a/3775302/7637995。
该建议确实对我有用,可以为我的服务器生成一个 html 页面。
但是,我需要更进一步,到目前为止,还没有找到方法。
正如我所说...使用该答案中提供的代码,并嵌入到我的 PHP 页面中...通过设置html页面的“名称”到“Mydocument”就像这样......
<?php ob_start(); ?>
/* My 'Form Page' Content Here */
<?php echo '';
file_put_contents('Mydocument.html', ob_get_contents());
?>.
但是...不必提前命名“一次性”目标 html 页面,而是每次都对其进行硬编码...我想知道是否可以自动拥有表单本身每次提交表单时为新的目标 html 页面生成一个名称。也许基于来自文本表单字段之一的输入数据。
例如,在表单中...我有一个名为“banner”的字段。输入该字段的文本最终成为 html 页面上文章的标题。
所以...我想知道“横幅”字段中的数据是否也可用于为目标 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 变量,并将其用作
file_put_contents...的第一个参数...但建议您清理您的输入!否则,有恶意的人可以制作标题来覆盖您服务器上的任意文件,并可能运行任意代码。 -
首先直接回答这个问题:当然这样的事情是可能的。您只需使用将名称作为值保存的字符串变量,而不是您当前使用的硬编码名称。您如何构建该名称值以及取决于您的数据。您只需确保正确转义任何用户输入(客户端数据),以防止对有趣名称产生安全隐患。
-
然而,整个问题看起来好像您并不真正了解如何以动态方式生成网页,例如通过 php.ini 生成网页。为什么要创建一个 html 文件?做什么的?为什么不将数据保存在数据库中并在请求时动态生成 html 文档?这为您省去了编写文件、清理文件和防止名称冲突的所有麻烦......
-
谢谢大家。 arkascha ..你是对的。我意识到我很可能以错误的方式解决这个问题。我可以调用的数据库最终是我需要走的路。但正如您可能已经注意到的那样,我还没有达到我需要的编码水平。我很惊讶我能走到这一步。感谢您的回复和输入。暂时,直到我了解更多关于数据库等的知识……我将首先尝试下面的 symcbean 提供的 sn-p。我会尽快提供一些反馈。再次感谢。