php关于get_magic_quotes_gpc()方法的使用

magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符(单引号,双引号,反斜线)引起的污染而出现致命的错误。

在php的配置文件中,有个布尔值的设置,就是magic_quotes_runtime,当它打开时,php的大部分函数自动的给从外部引入的(包括数据库或者文件)数据中的溢出字符加上反斜线。 当然如果重复给溢出字符加反斜线,那么字符串中就会有多个反斜线,所以这时就要用set_magic_quotes_runtime()与get_magic_quotes_runtime()设置和检测php.ini文件中magic_quotes_runtime状态。 为了使自己的程序不管服务器是什么设置都能正常执行。可以在程序开始用get_magic_quotes_runtime检测该设置的状态决定是否要手工处理,或者在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉该设置。

magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'"\加上反斜

线。可以用get_magic_quotes_gpc()检测系统设置。如果没有打开这项设置,可以使用
addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

简单用法,添加转义过滤:

if(!get_magic_quotes_gpc()){    addslashes($prot);}

也可以在项目程序初始化时应用该方法:

 /      * 构造函数     *     * 构造应用程序对象     */    protected function __construct()    {        // 1.初始化运行环境        // 1.1 禁止 magic quotes        set_magic_quotes_runtime(0);        // 1.2 处理被 magic_quotes_gpc 自动转义过的数据        if (get_magic_quotes_gpc())        {            $in = array(& $_GET, & $_POST, & $_COOKIE, & $_REQUEST);            while (list ($k, $v) = each($in))            {                foreach ($v as $key => $val)                {                    if (! is_array($val))                    {                        // 解析被转义过的数据                        $in[$k][$key] = stripslashes($val);                        continue;                    }                    $in[] = & $in[$k][$key];                }            }            unset($in);        }  }

php配置:

关键字:php


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部