2

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

它在现在,

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

我想做的是创建一个按钮“另存为 html”

当我按下它时,它有一个窗口另存为对话框,允许用户选择存储位置,

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

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

再次感谢你。

4

3 回答 3

4

您不能只是将<html>标签放入<textarea>标签中,它不会那样工作。

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

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

于 2012-04-15T09:49:08.443 回答
2

您可以使用 php 标头函数执行此操作,如下所示(假设您的 html 已发布到此页面:

<?php

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

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

编辑:但是你应该注意可能的 XSS 攻击,比如评论中提到的 Damien Pirsy,你总是可以清理输入,去掉不需要的东西,比如脚本。

于 2012-04-15T09:50:40.333 回答
2

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

通过 POST 方法将“输入”数据发送到 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 />";
于 2012-04-15T10:00:27.900 回答