PHP 缓冲输出帮助。生成 pre-named html 页面

PHP bufferring output help. Generating a pre-named html page

我正在尝试使用 php 输出缓冲功能在用户表单提交后创建一个新的 html 页面。

我在这里进行了研究,并在另一个线程上找到了有关此答案的帮助.... 。

这个建议对我有用,可以为我的服务器生成一个 html 页面。

但是,我需要更进一步,到目前为止,还没有找到方法。

正如我所说...使用该答案中提供的代码,并嵌入到我的 PHP 页面中...我能够生成一个新的 html 页面,其中包含我的所有内容通过将 html 页面的 'name' 设置为 "Mydocument" 来在我的服务器上完整地形成数据...

    <?php ob_start(); ?> 
    /* My 'Form Page' Content Here */ 
    <?php echo ''; 
    file_put_contents('Mydocument.html', ob_get_contents()); 
    ?>. 

但是...不必提前命名 'one-off' 目标 html 页面,每次 hard-coding 它...我想知道它是否可能有表单本身,每次提交表单时自动为新目标 html 页面生成一个名称。也许基于来自文本表单字段之一的输入数据。

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

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

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

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

"Giant Asteroid To Hit Earth"

当 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 函数修复了很多安全问题。而且我删除了多余的结束符 '?>'