2

私はいくつかのhtmlコードを生成するためにphpを使用しています

それは今にあります、

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

私がやりたいのは、「htmlとして保存」ボタンを作成することです

それを押すと、ウィンドウとして保存ダイアログが表示され、ユーザーが保存する場所を選択できるようになります。

次に、確認時にその場所に保存します(ダイアログは、Windowsのものを使用して私が作成するべきではありません。)

ワークフローは次のとおりです: 最初にサーバーに一時 html ファイルを保存し、次にユーザーがダイアログを開きます (「部分への保存」について心配する必要はありません。一時 html ファイルのパスを指定するだけで済みます)。ユーザーが閉じると、一時ファイルを削除します。では、どうすれば実現できるのでしょうか。ありがとう

ありがとうございました。

4

3 に答える 3

4

<html>タグをタグに入れるだけ<textarea>では機能しません。

ほとんどのことを処理してくれるTinyMCEなどの既製のソリューションを使用することをお勧めします。また、誰かが悪意のあるスクリプトを保存する可能性があるため、HTML Purifierなどを使用して、保存する前にユーザー入力をサニタイズします。

TinyMCE の Web サイトには、その使用方法に関する多くの例があります。

于 2012-04-15T09:49:08.443 に答える
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 に答える
2

このようにphpヘッダー関数を使用してそれを行うことができます(htmlがこのページに投稿されていると仮定します:

<?php

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

このphpページをそのフォームのターゲットに設定すると、完了だと思います

編集: ただし、コメントに記載されている Damien Pirsy のような XSS 攻撃の可能性に注意する必要があります。ただし、スクリプトなどの不要なものを削除して、いつでも入力をサニタイズできます。

于 2012-04-15T09:50:40.333 に答える