PHP中get_magic_quotes_gpc()函数
(2012-01-30 11:47:44)
标签:
phpget_margicquotes_gpcit |
分类: php那些事 |
在PHP中get_magic_quotes_gpc()函数是内置的函数,这个函数的作用就是得到php.ini设
置中magic_quotes_gpc选项的值,获得系统变量,取得PHP环境变量magic_quotes_gpc的
值。
语法:
longget_magic_quotes_gpc(void)
返回值: 长整数
PHP的get_magic_quotes_gpc函数应该如何使用呢?
本函数取得PHP环境配置的变量magic_quotes_gpc(GPC,Get/Post/Cookie)值。返回0表
示关闭本功能;返回1表示本功能打开。当magic_quotes_gpc打开时,所有的‘(单引号),”
(双引号),\(反斜线)and 空字符会自动转为含有反斜线的溢出字符。
先说一下magic_quotes_gpc选项:
magic_quotes_gpc功能为:是否自动为GPC(get,post,cookie)传来的数据中的\’\”\\加上反斜
线。
如果magic_quotes_gpc=On,返回1,PHP解析器就会自动为post、get、cookie过来的数据
增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污
染而出现致命的错误。
在magic_quotes_gpc=On的情况下,如果输入的数据有单引号(’)、双引号(”)、反斜线()
与NUL(NULL字符)等字符都会被加上反斜线,这些转义是必须的。
如果这个选项为off,返回0,那么我们就必须调用addslashes这个函数来为字符串增加转
义。
例如:
if(!get_magic_quotes_gpc())
{
addslashes($prot);
}
当然如果php中重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就
要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中
magic_quotes_runtime状态。
为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始
get_magic_quotes_runtime检测该设置的状态决定是否要手工处理,或者在开始(或不需要
自动转义的时候)用set_magic_quotes_runtime(0)关掉该设置。
可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用addslashes()
函数添加,它的功能就是给数据库查询语句等的代码需要在某些字符前加上反斜线。
但是值得注意的是:
正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,
一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数
据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。
后一篇:JS的IE和FF兼容性问题汇总