2013-09-28 14 views
1

我有一個數據庫設置爲存儲用戶輸入,然後顯示它們放在頁面上的內容。來自數據庫的PHP回聲代碼

$input = mysql_real_escape_string(stripslashes(addslashes($_POST["input"]))); 
//Later on 
echo '<div>'.$input.'</div>'; 

我去textarea的和一些基本的PHP代碼"<?php echo 'blahblah'; ?>,"類型,並將其提交到數據庫正常,但網頁上不顯示任何它。沒有'blahblah',沒有標籤。我希望它顯示整個"<?php echo 'blahblah'; ?>",以便人們可以發佈任何他們想要的東西。

+3

1)開始使用[準備好的語句和綁定參數](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)而不是那些東西是你的目前正在使用。 2)使用'htmlspecialchars()'來顯示數據 – PeeHaa

回答

-1

你應該嘗試以下操作:

echo '<div>'.htmlentities($input).'</div>'; 

它可以轉換像<特殊字符和>爲HTML實體,使他們在瀏覽器中正確顯示。

+0

完美工作。謝謝。 –

0

轉義需要適合其上下文。

  • 當插入到數據庫中,使用mysql_real_escape_string(或遷移到新mysqli_real_escape_string,或到PDO)或參數化查詢(AKA準備的語句)中讀取的。
  • 以HTML格式顯示時,請使用htmlspecialcharshtmlentities

千萬不要一起使用,因爲你會陷入一片混亂,從不使用stripslashes(addslashes(...)),因爲這沒有意義。