2010-08-25 215 views
1

我有一個PHP的MySQL數據庫,我將存儲我的所有信息。我有一個HTML頁面上的文本字段,用戶可以添加數據,然後提交MySQL查詢插入此信息進入數據庫。相當標準的東西。PHP MySQL輸入HTML標籤

但是,我現在處於可以將TinyMCE或FCKEditor附加到我的文本字段(現在是文本區域)的位置。我的問題是:現在如何將這些信息存入數據庫,考慮到標籤會影響MySQL查詢,剝離任何標籤會影響在另一頁上顯示信息?

我知道strip_tags和類似的PHP功能,但我的問題不會與PHP將與數據庫輸入與MySQL,任何「或」或;將打破查詢並刪除這些標籤之前輸入將刪除用戶所做的任何格式增強

我也假設,如果我使用mysql_real_escape_string,我需要在顯示數據之前去掉斜槓 - 並且這會將所有斜槓關閉標籤:

+1

'考慮到該標籤會影響MySQL查詢...'爲什麼?發生什麼會導致這種情況?如果您正確地轉移傳入的數據(這對於安全原因至關重要),而這些不應該發生。 – 2010-08-25 09:20:34

回答

1

您需要在將值插入SQL語句之前將其轉義,如果使用mysql擴展名,則使用mysql_real_escape_string做到這一點:

$text = mysql_real_escape_string($_POST['text']); 

它會把字符,如引號,這樣你就可以安全地插入數據庫中的值。

+0

我認爲在別人面前(即當我在數據庫中顯示數據時),我需要去掉斜線,並且在剝去斜槓後,所有接近的標記和
也會刪除它們的斜線,數據的格式。我的意思是我已經有mysql_real_escape_string用於用戶輸入之類的東西,但認爲可能有另一種方法可用於此特定情況 – 2010-08-25 09:27:34

+0

您不需要在正確配置的Web服務器上使用反斜槓。當在PHP中使用魔術引號時,它們被使用了,但是現在它們已經被棄用了一段時間了。 'stripslashes'帶反斜槓,而不是'/',所以像''這樣的標籤不會受到影響。 – 2010-08-25 09:30:56

+0

那麼我該如何輸出這些數據呢?我不想在我的輸出中使用所有的轉義斜槓 – 2010-08-25 10:27:26