2011-05-26 34 views
0

我讓用戶輸入一些將存儲在sql中的信息。當然,我想逃避所有的引號等等,但我不希望這些東西輸出到最終的HTML。mysql_real_escape_string()是否會取消stripslashes()?

我正在爲所有$ _POST變量運行此函數。它有效嗎?

function cleanArray($array) //prevent funky insertions 
{ 
foreach ($array as &$value) 
{ 
    $value = mysql_real_escape_string(stripslashes(nl2br($value))); 
} 
return $array; 
} 

我擔心逃生字符串和stripslashes取消彼此?

+1

stripslashes會從用戶輸入中刪除斜線,並且會比mysql_real_escape_string將它們添加回來:)順便說一句,mysql_real_eascape只能用於鏈接標識符或已打開的數據庫連接,否則會返回錯誤。 – RRStoyanov 2011-05-26 20:08:13

+1

你可以避免完全逃脫,如果你使用準備語句:http://stackoverflow.com/questions/4357340/mysql-php-mysql-real-escape-syntax-issues/4358177#4358177 – Mike 2011-05-26 20:11:07

+0

我試圖完成一些東西簡單。退出報價..然後在我輸出我的內容之前聯合國 - 逃脫他們。 – ionfish 2011-05-26 20:16:37

回答

4

要在將字符串數據插入數據庫之前轉義字符串數據,請使用mysql_real_escape_string

要稍後在HTML頁面輸出相同的數據,如果要將HTML源代碼顯示爲文字字符,請使用htmlspecialchars(),如果要靜默移除任何HTML,請使用strip_tags()

不需要其他任何東西,除非你有magic quotes激活,在這種情況下,你確實需要stripslashes()之前做mysql_real_escape_string()。但是,魔術引號是deprecated and it would be much better to turn them off

+0

會將htmlspecialchars變成''嗎? – ionfish 2011-05-26 20:10:35

+0

@ionfish沒有,但如果設置了[ENT_QUOTES參數](http://php.net/htmlspecialchars),它會將''''變成''' – 2011-05-26 20:12:02

+0

我只是試圖從引用中刪除所有斜槓仍然保護我的數據庫。我將如何做到這一點。 – ionfish 2011-05-26 20:14:18

相關問題