2011-01-23 69 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的任何版本的报价了。