最近发现自己采集的文章能够顺利入库的很少。遍查原因才发现原来是magic_quotes_gpc的原因。
检查PHP的设置magic_quotes_gpc是为ON的,可见设置么有错。
测试一: 在表单中输入带单引号和双引号等需要转义的字符, 在提交代码中加入了 if(!(get_magic_quotes_gpc())) {$_POST = addslashes($_POST);}
数据能顺利入库。在页面中用 echo "<textarea>$str</textarea>" ; 能够看到,特殊符号都被加了反斜杠。 入库后,库中的字符串则没有反斜杠,这一切都
很正常。
测试二: 在代码中加入 $contents = 'asdfas'""asdfaf""asdfajiwerf' ; if(!(get_magic_quotes_gpc())) {$contents = addslashes($contents);}
数据不能入库。在页面中用 echo "<textarea>$str</textarea>" ; 能够看到,特殊符号没有被加反斜杠。addslashes()根本就没运行。
所以如果是采集的数据直接addslashes() 就好,不要用if(!(get_magic_quotes_gpc()))这个判断,否则反而不能入库。
经测试,采集来的数据直接addslashes()后 在echo "<textarea>$str</textarea>" ;能看到特殊符号都被加了反斜杠。能正常入库,入库后,库中的字符串则没有反斜杠。
可见get_magic_quotes_gpc() 仅仅对$_GET和$_POST的数据进行转义,对于代码中手动赋值的变量则忽略。
附:我的系统:
Apache/2.0.63 (Win32) PHP/5.2.14 mysql5