我特意查了以下手册。至于PHP magic_quotes_gpc,常见的设置如下:magic_quotes_gpc、Magic _ quotes _ Sybase、Magic _ quotes _ Runtime。这些功能是在php.ini中配置的,从手册中我们可以看到,这些功能从php5.3开始就被废除了,所以我们强烈建议您不要使用它们,并在php.ini中关闭它们
这些函数用于转义数据。在防止sql注入时,很多人会这样写:复制代码如下:if(!get _ magic _ quotes _ GPC()){ $ post=addslashes($ post);}如果打开,它们会自动转义单引号(')、双引号(')、反斜杠()和空值(空字符),相当于调用addslashes函数。你可能会说这样不太好,安全性比较高。然而,你考虑过代码可移植性吗?另外,你有必要转义所有gpc($_GET,$_POST,$_COOKIE)数据吗?费用是多少?下面的PHP Dian Dian tong(phpddt.com)在手册中给出了魔法报价的详细描述:1。Magic _ quotes _ GPC Magic _ quotes _ GPC这是用来设置GPC的魔术引用状态的($_GET、$_POST、$_COOKIE) ($_ENV也包含在PHP4中)。打开后,所有单引号、双引号、反斜杠和NUL将被反斜杠自动转义。当magic_quote_sybase打开时,只有单引号(singgle-quote)将被转义为“”,而双引号、反斜杠和NUL将不受影响并被转义。
2.Magic _ quote _ runtime Magic _ quote _ runtime如果打开此选项,许多返回外部数据(数据库、文本)的函数将被反斜杠转义。如果magic_quote_sybase也被打开,那么只有单引号会被单引号转义。
3.Magic _ quotes _ Sybase Magic _ quotes _ Sybase如果打开此选项,当Magic _ quotes _ GPC和Magic _ quotes _ runtime打开时,单引号将由单引号传输,而不是由反斜杠转义。同时,此设置将完全覆盖magic_quotes_gpc的设置,即使magic_quotes_gpc设置为on,双引号、反斜杠和NUL也不会被转义。