2011-01-23 68 views
1

我使用PHP和MySQL爲基礎論壇提供支持。當用戶使用撇號(')或在他們的帖子中插入鏈接時,mysql_real_escape_string函數將\添加到文本中。顯示帖子時,鏈接不起作用,並且所有的撇號在它之前都有一個\。在寫入數據庫之前清理數據的更好方法

問題是我在輸出文本之前沒有做某些事情,或者是在寫入MySQL之前沒有正確清理數據的問題?

回答

2

是否打開了magicquotes?您可以通過像這樣創建一個PHP頁面快速檢查:

<?php var_dump(get_magic_quotes_gpc()) ?> 

如果頁面上顯示像int(1),那麼罪魁禍首不是mysql_real_escape_string,但PHP本身。這是一個安全功能,但不是很安全,大多隻是令人討厭。在您清理每個變量之前,您首先需要使用stripslashes撤銷清除。

0

您還可以通過使用該關閉魔術引號:

if (version_compare(PHP_VERSION, '5.3.0', '<')) { 
    set_magic_quotes_runtime(0); 
} 

它會變成魔法當你的服務器運行PHP低於5.3.0的任何版本的報價了。