magic_quotes_gpc 设置为ON 可是却不起作用的原因。

最近发现自己采集的文章能够顺利入库的很少。遍查原因才发现原来是magic_quotes_gpc的原因。


检查PHP的设置magic_quotes_gpc是为ON的,可见设置么有错。


测试一: 在表单中输入带单引号和双引号等需要转义的字符, 在提交代码中加入了 if(!(get_magic_quotes_gpc())) {$_POST = addslashes($_POST);}

数据能顺利入库。在页面中用 echo "" ; 能够看到,特殊符号都被加了反斜杠。 入库后,库中的字符串则没有反斜杠,这一切都

很正常。


测试二: 在代码中加入 $contents = 'asdfas'""asdfaf""asdfajiwerf' ; if(!(get_magic_quotes_gpc())) {$contents = addslashes($contents);}

数据不能入库。在页面中用 echo "" ; 能够看到,特殊符号没有被加反斜杠。addslashes()根本就没运行。


所以如果是采集的数据直接addslashes() 就好,不要用if(!(get_magic_quotes_gpc()))这个判断,否则反而不能入库。


经测试,采集来的数据直接addslashes()后 在echo "" ;能看到特殊符号都被加了反斜杠。能正常入库,入库后,库中的字符串则没有反斜杠。


可见get_magic_quotes_gpc() 仅仅对$_GET和$_POST的数据进行转义,对于代码中手动赋值的变量则忽略。

附:我的系统:

Apache/2.0.63 (Win32) PHP/5.2.14 mysql5





你可能感兴趣的:(php)