我正在使用一小段代码通过PHP生成一个静态html页面。
这是代码:
<?php
ob_start();
file_put_contents('someName.html', ob_get_contents());
// end buffering and displaying page
ob_end_flush();
?>
上面的代码工作正常,它将创建html页面(someName.html)。
我想要做的是将html的名称从“someName”.html更改为PHP输出。 PHP页面是一个动态的PHP页面,它将根据用户通过html表单请求的内容显示一些结果。
例如:用户在输入框中输入2,创建的html页面将是2.html而不是someName.php。
我确实尝试过类似的东西,但这不起作用:
<?php
ob_start();
file_put_contents($usersInput'.html', ob_get_contents());
// end buffering and displaying page
ob_end_flush();
?>
有谁知道我需要怎么做?
编辑:
我现在就这样试过了:
<?php
if (isset($_POST['userInput']))
{
file_put_contents($_POST['userInput'].'.html', ob_get_contents());
}
// end buffering and displaying page
ob_end_flush();
?>
所以基本上用户在html表单的输入字段中输入2,html文件应该被称为2.html。
我得到了这个错误:
Warning: file_put_contents(2.html) [function.file-put-contents]: failed to open stream: No such file or directory on line 1156.
这是在1156行:
file_put_contents($_POST['userInput'].'.html', ob_get_contents());
答案 0 :(得分:1)
你有语法错误,你忘了一个连接运算符:
file_put_contents($usersInput'.html', ob_get_contents());
file_put_contents($usersInput.'.html', ob_get_contents());
^ -- here
修改强>
对于failed to open stream
错误,您应该使用绝对路径。使用文件时始终建议这样做。
如果要将文件放在与运行脚本相同的目录中:
file_put_contents(__DIR__.'/'.$_POST['userInput'].'.html', ob_get_contents());
还要注意,用户可以输入一个带有不会生成有效文件名的字符的名称!
另外,您可能应该确保该目录是可写的:
is_writable(__DIR__);
检查the documentation关于__DIR__