2012-02-13 57 views
1

一直在使用PHP的PEAR框架開發應用程序,但遇到了雙轉義/引用輸入的問題,它不會讓換行符(\ n)正確顯示。搜索論壇提出了各種答案,但是想知道是否有人對是否使用PEAR的escape()或quote()函數足夠用於SQL注入安全性建議,還是應該堅持使用mysql_real_escape_string()?我嘗試使用nl2br()+用htmlspecialchars()事後吐出內容,並且最初使用不當以下逃脫輸入:PHP PEAR的escape()vs quote()vs mysql_real_escape_string()?

$db->quote(mysql_real_escape_string(trim($_POST['text'])));

+0

你還沒有提到你正在使用哪個軟件包 - 我認爲MDB2_MySQL? – kguest 2012-02-13 21:59:10

回答

4

使用數據庫驅動程序的避開功能。如果您使用PEAR包連接到數據庫,請使用其轉義函數。如果您使用原始mysql功能,請使用mysql_real_escape_string。不要使用多於一個(如你所想的)。

更好的是,隨時隨地使用現代準備的語句,例如PHP's PDO class

+0

+1用於「使用準備好的語句」。對於某些RDBMS(例如MSSQL),無論如何,這是唯一的「明確定義」選項。 – 2012-02-13 06:10:12

+0

啊,謝謝,由於某種原因,從來沒有真正引入到這一點。將檢查出來! – carlinyuen 2012-02-14 07:03:29