我使用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的任何版本的报价了。