2012-12-23 86 views
1

我運行一個MySQL和PHP驅動的博客/評論風格的網站,並希望把它使用戶可以添加格式標記到自己的崗位,如<bold><italics>等標籤,但是,在運行像ヶ輛因此用戶不能發佈類似<a><div id="footer">的內容並打破該網站。如何爲htmlentities標記異常?

所以,問題是我該如何解決這個問題?我是否會將它設置爲如此高效或類似的功能具有允許標記的白名單?我無法在這個問題上找到任何結果或協助。目前我對數據庫實體的分層排序是:

$content = nl2br ($_POST["content"]); 
$content = mysql_real_escape_string($content); 
$content = trim($content); 
$content = htmlentities($content); 

感謝您的任何幫助。再次,我想知道如果htmlentities甚至是我想用來完成這個功能,所以任何建議或地方看,將不勝感激!

+0

您的操作順序是一路順風。您不應該同時執行內容過濾*和SQL轉義。 [閱讀更多](http://stackoverflow.com/a/3126175/168868)。 – Charles

+0

對不起,我對數據庫輸入環境衛生仍然很陌生。我應該怎麼做? nl2br是我發現的方法,以確保/ n換行符能夠以簡單的方式保持格式化。 –

+0

請閱讀我發佈的鏈接。標有「閱讀更多」的標籤。它會教你關於驗證和衛生的不同類型以及它們應該在何時何地使用。 – Charles

回答

2

白名單是必須的.​​..使用strip_tags()功能,與第二個參數。

// Allow <p> and <a> 
echo strip_tags($text, '<p><a>'); 

不要將編碼的html保存在數據庫中。

+0

這工作,並做我在找什麼,謝謝! –