我使用PHP和MySQL爲基礎論壇提供支持。當用戶使用撇號(')或在他們的帖子中插入鏈接時,mysql_real_escape_string函數將\添加到文本中。顯示帖子時,鏈接不起作用,並且所有的撇號在它之前都有一個\。在寫入數據庫之前清理數據的更好方法
問題是我在輸出文本之前沒有做某些事情,或者是在寫入MySQL之前沒有正確清理數據的問題?
我使用PHP和MySQL爲基礎論壇提供支持。當用戶使用撇號(')或在他們的帖子中插入鏈接時,mysql_real_escape_string函數將\添加到文本中。顯示帖子時,鏈接不起作用,並且所有的撇號在它之前都有一個\。在寫入數據庫之前清理數據的更好方法
問題是我在輸出文本之前沒有做某些事情,或者是在寫入MySQL之前沒有正確清理數據的問題?
是否打開了magicquotes?您可以通過像這樣創建一個PHP頁面快速檢查:
<?php var_dump(get_magic_quotes_gpc()) ?>
如果頁面上顯示像int(1)
,那麼罪魁禍首不是mysql_real_escape_string
,但PHP本身。這是一個安全功能,但不是很安全,大多隻是令人討厭。在您清理每個變量之前,您首先需要使用stripslashes撤銷清除。
您還可以通過使用該關閉魔術引號:
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
set_magic_quotes_runtime(0);
}
它會變成魔法當你的服務器運行PHP低於5.3.0的任何版本的報價了。