我正在使用PHP和MySQL为基础论坛提供支持。当用户使用撇号(')或在其帖子中插入链接时,mysql_real_escape_string函数会将\添加到文本中。显示帖子时,链接不起作用,并且所有撇号都在它之前有一个\。
问题是我在输出文本之前没有做什么或者是在写入MySQL之前我没有正确清理数据的问题?
答案 0 :(得分:2)
Magicquotes是否已开启?您可以通过创建如下所示的PHP页面来快速检查:
<?php var_dump(get_magic_quotes_gpc()) ?>
如果页面显示int(1)
之类的内容,则罪魁祸首不是mysql_real_escape_string
,而是PHP本身。这是一个安全功能,但不是很安全,而且大多只是讨厌。在清理每个变量之前,首先需要使用stripslashes撤消削减。
答案 1 :(得分:0)
您也可以使用以下方法关闭魔术引号:
if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
set_magic_quotes_runtime(0);
}
当你的服务器运行任何低于5.3.0的版本的php时,它会关闭魔术引号。