2012-04-15 23 views
2

我使用PHP來產生一些HTML代碼如何保存在PHP中生成的html代碼?

它是在現在,

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

我想要做的就是創建一個按鈕「另存爲HTML」

當我按下它時,它有一個窗口另存爲對話框,允許用戶選擇要存儲的地方,

然後在確認時保存到那個位置(對話框不應該由我創建,使用窗口一個)

工作流程是:首先我在我的服務器上保存一個臨時html文件,然後用戶打開對話框,(我不需要擔心'保存到零件',只需要特定的臨時html文件路徑),當用戶關閉時,我刪除臨時文件。那麼,如何才能實現?謝謝

再次謝謝你。

+0

一個可能值得關於文件下載注入攻擊的文檔:https://www.aspectsecurity.com/wp-content/plugins/download-monitor/download.php?id=9 – nico 2012-04-15 12:02:00

回答

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 />"; 
+0

Thx,畢竟我該如何「保存」? – user782104 2012-04-15 10:04:18

+0

@ user782104更新了答案 – Ozzy 2012-04-15 10:07:19

+0

它表示標題的部分('Content-disposition:attachment; filename ='$ filename'');是否對此負責 – 2012-04-15 10:10:40

4

您不能只將一個<html>標籤放入<textarea>標籤,它不會那樣工作。

我建議你使用預先制定的解決方案,如TinyMCE這將爲您處理大部分事情。在保存之前,請使用類似HTML Purifier的內容來清理用戶輸入,因爲某人可以保存惡意腳本。

TinyMCE網站有很多關於如何使用它的例子。

+0

我目前正在使用ckeditor,它是相似的事情我相信,有沒有任何保存功能提供他們?謝謝 – user782104 2012-04-15 09:55:41

+0

@ user782104:我從來沒有使用過ckeditor,但看起來好像是可以的。例如,請參閱:http://goo.gl/4TcWG或http://stackoverflow.com/questions/7777110/can-we-save-ckeditor-data-into-doc-file(並且我沒有使用它搜索它很多...) – nico 2012-04-15 10:01:25

2

你可以使用PHP頭功能,這樣(假設你的HTML被髮布到這個頁面:

<?php 

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

集這個PHP頁面,在該表格的目標,我想你會做

編輯:但你應該注意可能的XSS攻擊像達明Pirsy在註釋中指出的那樣,你總是可以儘管淨化輸入,不需要的像腳本

+3

雖然這將是XSS攻擊者的天堂。讓他們在你的服務器上創建任意的html文件...好吧,聞到 – 2012-04-15 09:52:13

+0

你是對的,但是可以利用它並按照他們想要的方式對它進行消毒,比如脫機腳本和所有東西 – 2012-04-15 09:55:05

+2

那麼,這將是一個很好的集成回答 – 2012-04-15 09:56:12