2010-09-07 45 views
0

我有一些HTML代碼保存在PHP字符串PHP - 單引號過濾

$str = "<font size=2 color=#e0e0e0>you don't have a clue</font>"; 

我必須寫這個字符串到DB所以$str有可能成爲查詢的一部分..

現在不管我查詢...它只要細如沒有'單引號字符串中工作....

以下任一兩個會解決我的問題

    1. 一些內置的方法解析PHP字符串並刪除所有'單引號從中 ...我還記得這樣的功能的提經歷SQL注入一段時間。

      • 如何讓'單引號通過查詢提交給數據庫,而不會改變查詢即如何使這個查詢工作

      $str = "Don't";

      mysql_query("UPDATE content SET text='".$str."' WHERE p_ID='1');

注:

  • 我們不能讓用戶去照顧它還是遵循了一種技術,具有全成'提交
  • $str來自用戶的輸入...我使用大規模殺傷性武器PHP降價,所以現在你知道問題出在哪裏...

回答

3

使用mysql_real_escape_string

mysql_query("UPDATE content SET text='". mysql_real_escape_string($str)."' WHERE p_ID='1'"); 

在將數據提交給數據庫之前,不會轉義用戶輸入,它是一個安全漏洞,它允許用戶注入一個定製的查詢塊,這將改變您的原始查詢並與其一起執行。這不僅僅是爲了讓合法用戶提交包含單引號的內容,而且也是爲了防止我們查詢中的惡意用戶sql-injecting