给用户传入的变量进行转义操作

 

先看代码实现:

/* 对用户传入的变量进行转义操作。*/
if (!get_magic_quotes_gpc())
{
    if (!empty($_GET))
    {
        $_GET  = addslashes_deep($_GET);
    }
    if (!empty($_POST))
    {
        $_POST = addslashes_deep($_POST);
    }

    $_COOKIE   = addslashes_deep($_COOKIE);
    $_REQUEST  = addslashes_deep($_REQUEST);
}

/**
 * 递归方式的对变量中的特殊字符进行转义
 *
 * @access  public
 * @param   mix     $value
 *
 * @return  mix
 */
function addslashes_deep($value)
{
    if (empty($value))
    {
        return $value;
    }
    else
    {
        return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
    }
}

 

 

函数解释:

get_magic_quotes_gpc() :

功能: 取得 PHP 环境变数 magic_quotes_gpc 的值。

语法: long get_magic_quotes_gpc(void);

传回值: 长整数

函式种类: PHP 系统功能

本函式取得 PHP 环境设定的变数 magic_quotes_gpc(GPC, Get/Post/Cookie) 值。传回 0 表示关闭本功能;传回 1 表示本功能开启。当magic_quotes_gpc 开启时,所有的 '(单引号), " (双引号), \(反斜线) 和 空字符会 自动转为含有反斜线的溢出字符。

get_magic_quotes_gpc的功能为: 是否为GET、POST、COOKIE传来的数据中的‘ 单引号 “”双引号 \反斜线 加上反斜线

如果get_magic_quotes_gpc = ON ,则返回1,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别 是数据库语句因为特殊字符引起的污染而出现致命的错误。

 

 addslashes() :

 

功能: 使用反斜线引用字符串

 

语法: string addslashes ( string str)

 

返回值: 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线()以及(NULL 字符)。

 

 

 

posted @ 2012-09-29 16:49  oaijuru  阅读(336)  评论(0编辑  收藏  举报