thinkphp5变量过滤方法

框架默认没有设置任何过滤规则,你可以是配置文件中设置全局的过滤规则

默认全局过滤方法

用逗号分隔多个
'default_filter'         => 'htmlspecialchars',
也支持使用Request对象进行全局变量的获取过滤,过滤方式包括函数、方法过滤,以及PHP内置的Types of filters,我们可以设置全局变量过滤方法,例如:
Request::instance()->filter('htmlspecialchars');
支持设置多个过滤方法,例如:
Request::instance()->filter(['strip_tags','htmlspecialchars']),

在获取变量的时候添加过滤方法

例如:
Request::instance()->get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
Request::instance()->param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤
Request::instance()->post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤
可以支持传入多个过滤规则,例如:
Request::instance()->param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤
Request对象还支持PHP内置提供的Filter ID过滤,例如:
Request::instance()->post('email','',FILTER_VALIDATE_EMAIL);
框架对FilterID做了转换支持,因此也可以使用字符串的方式,例如:
Request::instance()->post('email','','email');
采用字符串方式定义FilterID的时候,系统会自动进行一次filter_id调用转换成Filter常量。

具体的字符串根据filter_list函数的返回值来定义。

需要注意的是,采用Filter ID 进行过滤的话,如果不符合过滤要求的话 会返回false,因此你需要配合默认值来确保最终的值符合你的规范。
例如,

Request::instance()->post('email','',FILTER_VALIDATE_EMAIL);
就表示,如果不是规范的email地址的话 返回空字符串。

如果当前不需要进行任何过滤的话,可以使用(V5.0.3+版本
// 获取get变量 并且不进行任何过滤 即使设置了全局过滤
Request::instance()->get('name','',null); 

评论

大侠名号:   验证暗号: 点击我更换图片

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND