我在网上找不到任何关于在网上get_magic_quotes_gpc()
任何地方返回错误结果的参考,所以我会给你一个清单来尝试缩小问题的范围(这可能应该是一个评论,但它太长了):
我要做的第一件事是尝试编辑php.ini
文件以确保 magic_quotes_gpc 确实设置为关闭。尝试此操作的最佳位置是php.ini
在与有问题的脚本相同的目录中创建/编辑文件,因为这是您在进入脚本之前可以覆盖 INI 设置的最后一个位置(并且 global_quotes_gpc 不能被覆盖低于因为在脚本运行时损坏已经造成)。
在您的php.ini
文件中,添加以下行:
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
只有第一个会影响 POST 变量(“gpc”代表“Get、Post和 Cookies”),但最好将它们全部设置好,因为它们都很糟糕。
设置这些行后,您可以确定魔术引号确实已关闭。如果这解决了问题,那么您需要在目录结构中查找它首先打开的位置。这可能位于更高目录php.ini
的文件、.htaccess
文件甚至您的http.conf
文件中。如果你不确定你在这里做什么,你可能想让你的主人参与进来。
addslashes()
如果问题仍然存在,那么您应该检查脚本中对该函数的任何调用。如果您使用的是 linux,这很容易,因为您可以grep -ir "addslashes" *
从项目的根目录运行命令。如果您在 Windows 上运行,您应该查看 Cygwin、unxutils 或其他 unix 层。我非常喜欢unxutils,它是我在 Windows 设置或新工作中安装的第一件事。
虽然我不明白为什么任何框架都会内置这样的东西,但我想有些白痴可能会尝试它。出于这个原因,您可能应该确保您grep
的框架文件也是如此。一定要检查php.ini
框架提供的任何文件,尽管这应该在我上面已经描述的内容中涵盖。
最后,您应该确保设置error_reporting
为E_ALL | E_STRICT
. 这可以通过php.ini
文件或使用error_reporting()
函数来完成。确保在任何其他 PHP 运行之前设置它。您应该始终使用最高的错误报告设置进行开发,这样您就可以在每个错误出现在用户面前之前看到它,无论它多么小。为确保您可以看到这些错误,还要确保也启用了显示错误。
尽管您粘贴到问题中的代码示例是有效的,但我提到了 error_reporting 以防万一它不是从您的代码中直接复制/粘贴,或者万一有其他代码导致错误。通过设置错误报告,您可以查看任何可能阻止get_magic_quotes_gpc()
或正确运行的错误stripslashes()
。如果您可以修复这些错误,那么您的其余代码将按预期工作。
祝你好运。