如何保存在php中生成的HTML代码?

时间:2012-04-15 09:44:12

标签: php html forms

我正在使用php生成一些HTML代码

现在,

<textarea>
<html>
....
</html>
</textarea>

我想要做的是创建一个按钮'另存为html'

当我按下它时,它有一个窗口保存为对话框,允许用户选择要存储的地方,

然后在确认时保存到那个地方(对话框不应该由我创建,使用windows one。)

工作流程是:首先我在我的服务器中保存了一个临时html文件,然后是用户打开的对话框,(我不需要担心'保存到部分',只需要特定的临时html文件路径) ,当用户关闭时,我删除临时文件。那么,它怎么能实现呢?感谢

再次感谢你。

3 个答案:

答案 0 :(得分:4)

您不能只将<html>标记放入<textarea>标记,它不会那样。

我建议您使用预先制作的解决方案,例如TinyMCE,它将为您处理大部分事情。在保存用户输入之前,还可以使用HTML Purifier之类的方法来清理用户输入,因为有人可以保存恶意脚本。

TinyMCE网站有很多关于如何使用它的例子。

答案 1 :(得分:2)

你可以使用php header函数来做到这一点(假设你的html被发布到这个页面:

<?php

header('Content-Disposition: attachment; filename="filename.html"');
echo $_POST['html'];
?>

将此php页面设置为该表单的目标,我想你会完成

编辑:但是你应该注意像Damien Pirsy在评论中指出的可能的XSS攻击,你总是可以清理输入,删除像脚本一样不需要的东西。

答案 2 :(得分:2)

PHP在服务器端不要忘记。生成页面后,它就在客户端上。我认为使用javascript做这类事情更有意义,尽管你也可以将数据发布到PHP页面然后获取数据。

通过POST方法将'input'数据发送到PHP页面:

<form action="savedata.php">
     <input id="someElement" name="someElementName" type="textarea" />
     <input type="submit" />
</form>

在PHP端收到它:

# savedata.php

$inputdata = $_POST["someElementName"];
$filename = "somefile.html";
file_put_contents($filename, $inputdata);

然后你可以用PHP链接下载文件。

echo "<a href='".$filename."'>Right-click, Save Target As...</a>";

之后,您可以从服务器中删除该文件,如下所示:

unlink($filename);

要打开保存文件对话框 - 重定向到该文件,浏览器应该打开一个保存文件对话框:

header('Content-type: text/plain'); 
header('Content-disposition: attachment; filename="$filename"'); 

要查看文件的预览,请制作iframe:

echo "<iframe src='$filename' width=600 height=200 frameborder=0 />";