表单数据过滤

7 篇文章 0 订阅

荆轲刺秦王

在实际项目中,对于用户提交的表单信息要做过滤,为了省事,将封装好的函数放到这里

先上公共函数:

if(! function_exists('array_txt_filter')) {
    /**
     * 过滤html标签sql注入 仅支持规则的一二维数组,字符串
     * @param $param array|string
     * @return $param
     */
    function array_txt_filter($param)
    {
        $dimension = '';
        if (is_array($param)) $dimension = array_depth($param);
        if ($dimension == 1) {
            foreach ($param as $k => $value) {
                $param[$k] = htmlspecialchars(trim($value));//将字符内容转化为html实体
                $param[$k] = addslashes($param[$k]);  //防止SQL注入
            }
            return $param;
        }

        if ($dimension == 2) {
            foreach ($param as $k => $value) {
                if(is_array($value)){
                    foreach ($value as $key => $v) {
                        $param[$k][$key] = htmlspecialchars(trim($v));   //将字符内容转化为html实体
                        $param[$k][$key] = addslashes($param[$k][$key]);  //防止SQL注入
                    }
                }
            }
            return $param;
        }

        if (is_string($param)) {
            $param = htmlspecialchars(trim($param));//将字符内容转化为html实体
            $param = addslashes($param);  //防止SQL注入
            return $param;
        }

        return $param;
    }
}
else
{
    exit('Lib\function.php\array_txt_filter冲突');
}

这种方法是将传入的参数一并过滤,还有一种是单个过滤:

if (!function_exists('txt_filter')) {
    function txt_filter( $txt )
    {
        $txt = trim($txt);  //清理空格
        $txt = strip_tags($txt);   //过滤html标签
        $txt = htmlspecialchars($txt);   //将字符内容转化为html实体
        $txt = addslashes($txt);  //防止SQL注入
        return $txt;
    }
}
else
{
    exit('Lib\function.php\txt_filter冲突');
}

在实际调用中可以这样:

public function levelAdd(Request $request){
        $param = $request->input();
        //判断参数
        if ( empty($param['node_id']) || empty($param['brand_id'])  ) {
            S::error(40001);
        }

        //过滤参数
        $sendParam = array_txt_filter($param);
}

这只是一个很简单的调用,还可以这样:

public function addWxMsg(Request $request)
{
        $templateName    = txt_filter($request -> get('name')); 
        $brandId    = txt_filter($request -> get('brand_id'));
        $pushId    = txt_filter($request -> get('status'));
        $templateId    = txt_filter($request -> get('template_id'));

}

具体使用就是这样了。

但在实际使用中,理论上来说是要对用户输入的全部内容都要进行过滤,这其中可能包含带有特殊字符的字段,这个时候就需要转义一下,具体使用:htmlspecialchars_decode  函数实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值