2012-03-01 38 views
1

当我在PHP中阅读函数get_magic_quotes_gpc()时,我非常困惑。我是否应该总是使用反斜杠_POST _GET和_COOKIE变量

到处都有人说功能已过时(example)。

但是PHP 5.3中的默认行为是什么?我用来检查,如果magic_quotes_gpc在和剥离所有的斜杠,如果是这样的话,在我的脚本开始的所有POST,GETCOOKIE变量,以便我不会感到困惑。

但是,如果我不应该检查使用get_magic_quotes_gpc()添加的斜线,如果PHP 5.3没有添加斜杠,总是删除斜杠会导致错误的数据。

我有this

同样的困惑目前magic_quotes_gpc是我的服务器(PHP 5.2.17),所以我需要删除斜杠。但我应该如何处理这个问题,为将来的PHP版本做好准备?

我可以以某种方式在我的脚本开始的运行时期间设置默认值吗?但是默认值是什么?

回答

7

get_magic_quotes_gpc函数不会被弃用,它的magic_quotes_gpc配置设置已弃用。

的解决方法是不使用自己的服务器上的magic_quotes_gpc配置设置,而且还利用get_magic_quotes_gpc如果你想编写可靠的代码,将在那些已经过时的magic_quotes_gpc设置开启的服务器上运行。

换句话说:

  • 在你的配置关闭magic_quotes_gpc
  • 无论你正在使用stripslashes,只要调用stripslashes如果get_magic_quotes_gpc() == 1
+0

不幸的是我没有对该服务器的配置文件的写入访问权限。我写了一个自己的函数来检查magic_quotes_gpc()。但是你说添加的斜线是PHP> 5.3中的默认行为?你有参考吗? – 2012-03-01 14:32:11

+0

不,除非启用'magic_quotes_gpc',否则添加斜杠不是默认行为。你并不需要编写你自己的'get_magic_quotes_gpc'版本,它不会被弃用。 – 2012-03-01 14:41:49

+0

我开始使用函数“filter_input_array()”。看来这个函数会自动删除值中的斜杠。我真的没有看到http://www.php.net/manual/en/filter.filters.sanitize.php上的警告文字。清理过滤器去除斜线的默认行为是?为什么不删除数组中的斜线?例如''input type =“text”name =“name [3] [to " ll]”value =“"”>''给出'name [3] [to \“ll]:''作为输出。所以,对于这些值,删除了斜线但不是键值。但我无法在PHP手册中找到这种行为的描述,... – 2012-03-02 11:10:21