PHP中常用数据过滤方法

PHP中常用数据过滤方法,可有效避免sql注入攻击。  

   /**

     +----------------------------------------------------------
     * 处理数组,深度转义,加反斜杠
     +----------------------------------------------------------
     * @param array $data  要处理的字符串
     +----------------------------------------------------------
     * @return array
     +----------------------------------------------------------
     */
function addslashes_deep($data)  
{  
    if ( is_array($data) ) {  
        foreach ( (array) $data as $k => $v ) {  
            unset($data[$k]);  
            $k=addslashes( $k );  
            if ( is_array($v) )  
                $data[$k] = addslashes_deep( $v );  
            else  
                $data[$k] = addslashes( $v );  
        }  
    } else {  
        $data = addslashes( $data );  
    }  
    return $data;  
}  

     /**

     +----------------------------------------------------------
     * 处理对象,深度转义,加反斜杠
     +----------------------------------------------------------
     * @param obj $data  要处理的字符串
     +----------------------------------------------------------
     * @return obj
     +----------------------------------------------------------
     */

function addslashes_deep_obj($obj)  
{  
    if (is_object($obj) == true)  
    {  
        foreach ($obj AS $key => $val)  
        {  
            $obj->$key = addslashes_deep($val);  
        }  
    }  
    else  
    {  
        $obj = addslashes_deep($obj);  
    }  
  
    return $obj;  
}  

     /**

     +----------------------------------------------------------
     * 处理字符串,反转义,去反斜杠
     +----------------------------------------------------------
     * @param string $string 要处理的字符串
     +----------------------------------------------------------
     * @return string
     +----------------------------------------------------------
     */
function stripslashes_deep($value)  
{  
    if (emptyempty($value))  
    {  
        return $value;  
    }  
    else  
    {  
        return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);  
    }  
}  

     /**

     +----------------------------------------------------------
     * 处理用户传入的变量,进行转义
     +----------------------------------------------------------
     * @param none
     +----------------------------------------------------------
     * @return string
     +----------------------------------------------------------
     */
if (!get_magic_quotes_gpc()) {  
    if (!emptyempty($_GET)) {  
        $_GET  = addslashes_deep($_GET);  
    }  
    if (!emptyempty($_POST)) {  
        $_POST = addslashes_deep($_POST);  
    }  
      
    $_COOKIE   = addslashes_deep($_COOKIE);  
    $_REQUEST  = addslashes_deep($_REQUEST);  
}  

     /**

     +----------------------------------------------------------
     * 处理数组,base64 反序列化
     +----------------------------------------------------------
     * @param array $data
     +----------------------------------------------------------
     * @return array
     +----------------------------------------------------------
     */
function unserialize_base64($data){  
    if(is_array($data)){  
         foreach($data as $key=>$item){  
            if(is_array($item)){  
                $data[stripslashes(base64_encode($key))] = base64_encoder_multi($item); /**并解决key的问题 如果有引号并去掉引号 stripslashes**/  
            }else{  
                $data[stripslashes(base64_encode($key))] = base64_decode($item);/**并解决key的问题 如果有引号并去掉引号 stripslashes**/  
            }  
         }  
         return $data;  
    }else{  
        return base64_decode(stripslashes($data));  
    }  
}  
function base64_encoder_multi($data){  
    if(is_array($data)){  
         foreach($data as $key=>$item){  
            if(is_array($item)){  
                $data[base64_encode($key)] = base64_encoder_multi($item); /**并解决key的问题**/  
            }else{  
                $data[base64_encode($key)] = base64_encode($item);/**并解决key的问题**/  
            }  
         }  
         return $data;  
    }else{  
        return base64_encode($data);  
    }  
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值