我想用PHP做一个简单的HTML生成器,其中用户输入一些数据,.php文件用HTML代码生成一个输出,包括来自用户的数据。
问题是我的生成器只生成一个空白的.html文件。
表格很简单:
<form action="html_form_submit.php" method="post">
<textarea name="name" rows="2" cols="20"> </textarea>
<input type="submit" value="Submit"/></form>和html_form_submit.php文件:
<?php
ob_start();
$name = @$_POST['name'];
?>
<html><body>
Name: <?php echo $name; ?><br>
</body></html>
<?php
$output = ob_get_contents();
$filename = 'test.html';
!$handle = fopen($filename, 'w');
fwrite($handle, $output);
fclose($handle);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
ob_end_clean();
?>你知道吗,问题在哪里?
发布于 2017-03-21 08:01:06
尝尝这个
在html_form_submit.php文件:
<?php
ob_start();
if(isset($_POST['name'])){
$name = $_POST['name'];
}
?>
<html><body>
Name: <?php echo $name; ?><br>
</body></html>
<?php
$output = ob_get_contents();
$filename = 'test.html';
!$handle = fopen($filename, 'w');
fwrite($handle, $output);
fclose($handle);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);
ob_end_clean();
?>发布于 2017-03-21 08:01:46
您应该在ob_end_clean之后立即移动对$output = ob_get_contents();的调用。ob_end_clean清除缓冲区,使响应返回为空。就像这样:
<?php
ob_start();
$name = @$_POST['name'];
?>
<html><body>
Name: <?php echo $name; ?><br>
</body></html>
<?php
$output = ob_get_contents();
ob_end_clean();
$filename = 'test.html';
!$handle = fopen($filename, 'w');
fwrite($handle, $output);
fclose($handle);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize("$filename").";");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
readfile($filename);https://stackoverflow.com/questions/42921202
复制相似问题