PHP缓冲区输出帮助。生成预先命名的html页面

时间:2017-02-28 22:46:23

标签: php buffering

我正在尝试使用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页面生成一个名称。也许基于来自其中一个文本表单字段的输入数据。

在表单中,例如......我有一个名为'banner'的字段。输入该字段的文本最终成为html页面上文章的标题。

所以...我想知道该'banner'字段中的数据是否也可用于自动生成目标html页面的'name'。

因此,我不必为目的地html页面编写“名称”,例如; 'Mydocument.html'(或其他)......表单会在提交时自动为该html页面创建一个名称。

例如......如果我的标题(输入表格的'banner'字段)是

“巨型小行星撞击地球”

当PHP代码生成时,它可能看起来像这样....

    <?php ob_start(); ?> 
    /* My 'Form Page' Content Here */ 
    <?php echo '';      
      file_put_contents('Giant%Asteroid%To%Hit%Earth.html'
      , ob_get_contents()); 
    ?>. 

如果有人可以帮助我......我将不胜感激。

1 个答案:

答案 0 :(得分:0)

<?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函数修复了许多安全问题。我已经删除了多余的结束'?&gt;'