【发布时间】:2017-03-01 21:25:06
【问题描述】:
我的网站上有一个用户 HTML 表单。在“提交”表单时,我使用 PHP 缓冲将输出保存为根目录中的 html 文件。
目前,该文件已成功生成并保存,并具有从其中一个表单字段中获取的指定页面名称。到目前为止,一切顺利。
以下代码可以出色地实现这一目标:
<?php
ob_start();
$headline=preg_replace('#[^_0-9a-zA-Z]#', '_', $_REQUEST['banner']);
?>
/* My 'Form Page' Content Here */
<?php
echo '';
file_put_contents($headline . '.html', ob_get_contents());
但是....
我想在我的表单中包含一个下拉选择器,具有不同的“部分”,例如:“新闻”、“体育”、“天气”等...选择特定目录(文件夹)在我的服务器上,因此生成的 html 文件将保存到指定的目录。
我需要表单字段方面的帮助,以及实现此目的的 php 缓冲方面。我不知道从哪里开始。
【问题讨论】:
-
你能概括一下为什么你想这样做吗?通常,当提交(发布)表单时,它会采取一些操作然后重定向,因此输出出现在 get 请求中。如果你想创建一个文件,你可以使用文件写入命令来完成,这可能比使用输出缓冲系统更可取。
-
我认为您对 $_REQUEST 的使用有点限制您。为什么不使用 $_POST 并获取表单变量?
-
我们的建议仍然是使用简单的基于数据库的方法来生成动态页面,正如我们在您上一个关于此问题的评论中所评论的那样。这将为您省去很多家务和清理问题的麻烦。但是,如果您真的想继续投资这种奇特的设置,那么至少在将用户提供的数据用于服务器端文件系统操作之前,请注意真正清理用户提供的数据。否则您将实施巨大的安全漏洞......
-
@JamesShaver 为什么有限制?
$_REQUEST包含表单和 URL 中的所有$_POST和$_GET参数。 -
@arkascha 比删除所有非字母数字字符能干净多少?