2014-01-19 89 views
0

基本上,我想用標準格式的用戶輸入代碼片段來更新靜態HTML文件。我知道如何更新文件的工作,我只是不確定如何去包括代碼輸入從表單到我的PHP文件,如下所示。使用PHP從表單輸入更新HTML文件

<?php 
if($handle = opendir()) { 
$search = '</body>'; 
replace = <<< EOF 
<!-- I want to populate this with form field input.--> 
EOF; 
while(false !== ($entry = readdir($handle))) { 
    if(is_dir($entry)) continue; 

    $content = file_get_contents($entry); 
    $content = str_replace($search, $replace . '</body>', $content); 
    file_put_contents($entry, $content); 
} 
} 

echo 'done'; 

?> 

任何幫助非常感謝。

+0

我真的不明白這一點,你可以更具體的你想做什麼? – Benedictus

+0

從本質上講,所有這一切都是一個朋友更新購物車(simplecart)的簡單方法,有人爲她一起入侵,無需直接修改源代碼,因爲她不斷破壞事情並且原始開發者已經消失。這些文件將被.htaccess保護。我是數據分析師,決不是開發人員。這似乎是我腦海中最簡單的解決方案。 –

+0

購物車與創建html文件有什麼關係?我是一個小混混:) – Benedictus

回答

1

我會有點不同。我建議除了正在修改的模板文件外,還有一個模板文件。這樣,你總是修改一個新的副本,而不必擔心新版本中發生了什麼變化。

如果您的需求變得更加先進,而不是簡單地放入某些標記,我可能會建議使用DOM解析器。

最後,我相信你有寫這些靜態文件的好理由......只要記住這樣做的安全含義。你正在有效地讓別人做任何他們想要的東西到你的服務器上。

+0

布拉德,謝謝你的建議。從本質上講,所有這些都是讓朋友更新購物車(simplecart)的簡單方法,因爲她不斷直接修改源文件,並且原始開發者已經消失,所以有人爲她加入了黑客攻擊。這些文件將被.htaccess保護。 –

+1

@RyAnMoRgan這不是你想做什麼的好方法。您應該使用具有用戶界面的正確購物車來更新數據庫中的產品信息。 – Brad

+0

我不是開發者Brad,我是數據分析師,我最初並沒有設置這個。我明白這並不是解決問題的最佳解決方案,但它是唯一的解決方案。她可能每個月從這家商店獲得價值40美元的銷售額。這不是一個大的操作。我只是想讓它工作,所以每次她不得不修改源文件來添加一個項目時,她都不會打電話給我。 :) –

-1

雖然這是一個可怕的解決方案,與您的代碼混合,這將做

$replace = array_key_exists('input',$_REQUEST) ? $_REQUEST['input'] : ''; 
//$replace = sanitize($replace); // there's so much bad with this string 
//do the needfull 
?> 
<form method='GET' action='#'> 
    <input type='text' name='input' /> 
    <input type='submit' /> 
</form> 
+0

你在哪裏得到這個「消毒」功能?你在哪裏寫輸出?你應該在你的答案中提供解釋,特別是那些剛剛入門的人。 – Brad

+0

消毒,是應該自己寫的東西,即時消息只是說,如果你不小心輸入了一些東西,可能會發生所有類型的恐怖 – Benedictus

+0

需求是HTML存在。不幸的是,在這種情況下不能進行消毒。這是爲了構建一些管理實用程序,而不是處理來自不可信用戶的一般輸入。儘管如此,這是一個可怕的解決方案。 – Brad

0

雖然我同意這是在沒有辦法的具體問題的最佳解決方案,任何人都可能會發現這很有用在未來我使用file_get和str_replace來實現預期的結果。下面的代碼將允許您搜索文件中的特定術語,並根據表單輸入替換您想要的任何內容。

<?php 
//These are the variables the html file will post to the script. 
$filename = $_POST['myFile'];; 
$tofind = $_POST['myFind'];; 
$toreplace = $_POST['myReplace'];; 


$file = file_get_contents($filename); 

$end = str_replace($tofind, $toreplace, $file); 


$fp = fopen($filename, "w"); //Open the filename and set the mode to Write 
if(fwrite($fp, $end)) ; //Write the New data to the opened file 
fclose($fp); //Close the File 



echo(" File name is $filename ... Finding $tofind .... Replacing with $toreplace .....   Done !"); 
?>