2017-03-01 61 views
0

我在我的網站上有一個用戶HTML表單。在表單的「提交」中,我使用PHP緩衝將輸出保存爲我的根目錄中的html文件。使用PHP緩衝將PHP輸出保存到特定目錄中的HTML

目前,該文件生成並保存成功,使用從其中一個表單字段獲取的指定頁面名稱。到現在爲止還挺好。

下面的代碼出色的作品以達到:

<?php 
ob_start(); 
$headline=preg_replace('#[^_0-9a-zA-Z]#', '_', $_REQUEST['banner']); 
?> 
/* My 'Form Page' Content Here */ 
<?php 
echo ''; 
file_put_contents($headline . '.html', ob_get_contents()); 

但是....

我想包括一個下拉在我的表格選擇,不同的「部分」,如:「新聞」,「體育」,「天氣」等....選擇我的服務器上的特定目錄(文件夾),所以生成的HTML文件將保存到指定的目錄。

我需要在表單字段方面的幫助,以及php緩衝方面來實現這一點。我不知道從哪裏開始。

+0

你勾勒_why_要做到這一點?通常,當提交(發佈)表單時,它會執行一些操作然後重定向,所以輸出顯示在get請求中。如果你想創建一個文件,你可以用文件寫入命令來完成,這可能比使用輸出緩衝系統更好。 – halfer

+0

我認爲你使用$ _REQUEST會限制你一點。爲什麼不使用$ _POST並獲取表單變量? –

+0

我們的建議仍然是使用簡單的基於數據庫的方法來生成動態頁面,就像我們對您最後一個關於這個問題的評論一樣。這將節省你很多麻煩與管理和清理問題。但是如果你真的想繼續投資這個奇特的設置,那麼至少在你使用服務器端文件系統操作之前真正清理用戶提供的數據。你會實施一個巨大的安全漏洞,否則... – arkascha

回答

0

添加目錄下拉:

<select name="directory"> 
    <option value="news">News</option> 
    <option value="sports">Sports</option> 
    ... 
</select> 

然後以此爲腳本文件名的目錄部分:

$dir = $_REQUEST['directory']; 
$valid_directories = array('news', 'sports', 'weather', ...); 
if (!in_array($dir, $valid_directories)) { 
    die("Invalid directory"); 
} 
file_put_contents("$dir/$headline.html", ob_get_contents());