discuz的daddslashes详解

从康盛的ucenter中我们查看daddslashes函数,提到daddslashes函数,我们要看看前面的代码

unset($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS);

$_GET = daddslashes($_GET, 1, TRUE);
$_POST = daddslashes($_POST, 1, TRUE);
$_COOKIE = daddslashes($_COOKIE, 1, TRUE);
$_SERVER = daddslashes($_SERVER);
$_FILES = daddslashes($_FILES);
$_REQUEST = daddslashes($_REQUEST, 1, TRUE);

这里将$_GET,$_POST,$_COOKIE和$_REQUEST这四个函数进行特殊过滤,下面我们再来看daddslashes函数

 

GET,$_POST,$_COOKIE和$_REQUEST这四个函数进行特殊过滤,下面我们再来看daddslashes函数

 

 

 
function  daddslashes( $string $force  = 0,  $strip  = FALSE) {
     //字符串或数组  是否强制  是否去除
     //如果魔术引用未开启 或 $force不为0
     if (!MAGIC_QUOTES_GPC ||  $force ) {
         if ( is_array ( $string )) {  //如果其为一个数组则循环执行此函数
             foreach ( $string  as  $key  =>  $val ) {
                 $string [ $key ] = daddslashes( $val $force );
             }
         else  {
       
             $string  addslashes ( $strip  stripslashes ( $string ) :  $string );
         }
     }
     return  $string ;
}

 

 

从上面的函数我们可以看出,只要是$_GET,$_POST,$_COOKIE和$_REQUEST这四个超全局变量,都会进行特殊过滤,因为$_REQUEST函数包含了前面的三个函数,所以才要过滤这四个函数,当是这四个超全局变量的时候,不管是否开启了魔术引用,都将进行下面的先去掉反斜线再进行转义。
这样可以有效的防止太多的反斜线。

你可能感兴趣的:(PHP学习收集)