我正在使用 PHP 和 MySQL 为基本论坛提供支持。当用户使用撇号 (') 或在他们的帖子中插入链接时,mysql_real_escape_string 函数会将 \ 添加到文本中。显示帖子时,链接不起作用,并且所有撇号前面都有一个 \。
是我在输出文本之前没有做某事的问题,还是我在写入 MySQL 之前没有正确清理数据的问题?
我正在使用 PHP 和 MySQL 为基本论坛提供支持。当用户使用撇号 (') 或在他们的帖子中插入链接时,mysql_real_escape_string 函数会将 \ 添加到文本中。显示帖子时,链接不起作用,并且所有撇号前面都有一个 \。
是我在输出文本之前没有做某事的问题,还是我在写入 MySQL 之前没有正确清理数据的问题?
魔术报价是否打开?您可以通过创建一个 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);
}
当您的服务器运行低于 5.3.0 的任何 php 版本时,它将关闭魔术引号。