这里是文章模块栏目内容页
thinkphp的input方法和request对象的get post param方法区别

很多时候php后台接受前端发送来的post提交或者get提交;

需要进行一些类似csf过滤,mysql注入过滤;

本身thinkphp对提交的网络数据是进行过 简单的安全防护的;

获得get请求的数据;可以用

request::get('参数名','默认值');

获得post请求提交的数据,可以用

request::post('参数名','默认值');


在不确定客户端采用post还是get请求时,可以用param 方法;

request::param('参数名','默认值');


thinkphp对 数据是做过安全过滤的;


为了安全保障,我们自己也能对数据进行常用的过滤

下面是实现办法:

    /**
     * 过滤接受的参数
     * @param $str
     * @return array|mixed|string|string[]|null
     */
    public function filterWord($str, string $field = null)
    {
        if (!$str) return $str;
        if (strstr($field, '/')) {
            [$field] = explode('/', $field);
        }
        if ($field && in_array($field, $this->except)) {
            return $str;
        }
        // 把数据过滤
        $farr = [
            "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",
            "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
            "/select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile|dump/is"
        ];
        if (is_array($str)) {
            foreach ($str as &$v) {
                if (is_array($v)) {
                    foreach ($v as &$vv) {
                        if (!is_array($vv)) $vv = preg_replace($farr, '', $vv);
                    }
                } else {
                    $v = preg_replace($farr, '', $v);
                }
            }
        } else {
            $str = preg_replace($farr, '', $str);
        }
        return $str;
    }

thinkphp 的facde函数 input 是对 request get post 和param 的一个快速访问;

input('get.') 表示获取get全部参数;

input('post.') 表示获取post 全部参数;

input('param.')表示获取全部 参数;

还有一个 最适用的方法 input('')可以获取 get post  等任意请求 的参数;

也能获取通过php 管道传输的数据  


好了,本文内容全部结束,感谢您的阅读,希望对您有所帮助;