2011-08-15 46 views
0

在下面的代碼中,第二行將帖子$comment過帳到Twitter。在mysql_real_escape_string之後,撇號在前面的反斜槓中顯示在Twitter上

$comment下面有撇號時,它們在Tweet中加上反斜槓。我如何擺脫Twitter中的反斜槓?

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

$tweet->post("statuses/update", array("status" => "$comment $fullurl")); 
+0

如果您沒有使用UTF-8進行數據庫連接,這可能是原因 – ajreal

+0

除非$ tweet-> post()與數據庫交互,否則不應該使用數據庫轉義函數。 – mario

+0

您也可以從'MRES'切換到'PDO'並停止擔心引號和SQL注入。 –

回答

2

也許magic_quotes在PHP conf中設置爲on?見manual

你也可以做

$comment = mysql_real_escape_string(stripslashes($_POST['comment'])); 
+0

不會將$ comment變量暴露給SQL注入嗎? – John

+0

不,因爲'mysql_real_escape_string'完全阻止注入。用'stripslashes'你可以防止雙重逃跑。 – rabudde

3

有沒有SQL的這一切可見的,所以呼籲mysql_real_escape_string沒有意義的。事實上,既然你說你發佈到Twitter,我懷疑有任何涉及的SQL在你身邊(至少不是那個部分)。

逃逸應該總是做的最後一件事,立即實際使用的變量在SQL語句之前,和該SQL語句的上下文。如果您的$tweet->post函數也在您身邊執行了某些SQL,請使用該函數進行必要的轉義。