1

我正在使用 PHP 和 MySQL 为基本论坛提供支持。当用户使用撇号 (') 或在他们的帖子中插入链接时,mysql_real_escape_string 函数会将 \ 添加到文本中。显示帖子时,链接不起作用,并且所有撇号前面都有一个 \。

是我在输出文本之前没有做某事的问题,还是我在写入 MySQL 之前没有正确清理数据的问题?

4

2 回答 2

2

魔术报价是否打开?您可以通过创建一个 PHP 页面来快速检查,如下所示:

<?php var_dump(get_magic_quotes_gpc()) ?>

如果页面显示类似int(1),那么罪魁祸首不是mysql_real_escape_string,而是 PHP 本身。这是一项安全功能,但不是很安全,而且大多只是烦人。在清理每个变量之前,您首先需要使用stripslashes撤消斜线。

于 2011-01-23T21:47:09.530 回答
0

您还可以使用以下方法关闭魔术引号:

if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
    set_magic_quotes_runtime(0);
}

当您的服务器运行低于 5.3.0 的任何 php 版本时,它将关闭魔术引号。

于 2011-01-23T23:54:19.800 回答