我正在使用php生成一些HTML代码
现在,
<textarea>
<html>
....
</html>
</textarea>
我想要做的是创建一个按钮'另存为html'
当我按下它时,它有一个窗口保存为对话框,允许用户选择要存储的地方,
然后在确认时保存到那个地方(对话框不应该由我创建,使用windows one。)
工作流程是:首先我在我的服务器中保存了一个临时html文件,然后是用户打开的对话框,(我不需要担心'保存到部分',只需要特定的临时html文件路径) ,当用户关闭时,我删除临时文件。那么,它怎么能实现呢?感谢
再次感谢你。
答案 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 />";