已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: [php]引号、斜杠与magic_quotes_gpc

作者: @Ta

时间: 2011-07-30

点击: 2583

在php的众多配置中,有一项最不受欢迎的配置:magic_quotes_gpc(全局变量引号自动转义)。它做什么呢?很简单,就是在程序开始运行前,把$_GET、$_POST、$_COOKIE和$_REQUEST里所有的 \ 都改成 \\ ,所有的 ' 都改成 \' 。当初设计它们的目的,是防止非法SQL注入,方便程序员书写SQL语句。
但是,这项配置并没有给程序员带来任何方便,反而给我们和用户带来了无尽的麻烦!因此,在PHP5.3中,它被取消了。并且95%以上的Windows主机都关闭了它。
但是在Linux主机中,情况完全不同。大部分免费提供的Linux主机都打开了这一配置。
于是,我们不得不在程序开始前判断magic_quotes_gpc是否打开,是,则去掉多余的转义斜杠。否则,从表单中获取的内容就会有问题。
虎绿林程序中0wap/sub/strip_quotes_gpc.sub.php实现了这一自动去除的功能。
另一项配置是magic_quotes_runtime,用于对运行时从外部(数据库、文件)取得的文本加斜杠。我们可以使用ini_set('magic_quotes_runtime',0);关闭它。
不要使用magic_quotes_runtime(0)函数,因为在php5.3中,ini_set只会失败并返回false,而这个函数却会因为已经被废弃而导致页面上出现无法避免的警告。
附:另一项配置是magic_quotes_sybase,它将导致magic_quotes_gpc失效,并仅把全局变量中的 ' 转义为 '' ,因为Sybase、SQL Server、Access、SQLite等数据库要求这样转义。
我的sub.php文件也对这种情况进行了处理。

[隐藏样式|查看源码]


『回复列表(3|隐藏机器人聊天)』

1. 先顶一个!
(/@Ta/2011-07-30 23:02//)

2. 学习了,谢谢
(/@Ta/2011-08-05 12:57//)

3. 美女视频3gp
(/@Ta/2011-10-16 07:15//)

回复需要登录

9月22日 09:49 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1