| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | <?phpnamespace app;use app\dict\common\ChannelDict;use app\service\core\site\CoreSiteService;/** * Class Request * @package app */// 应用请求对象类class Request extends \think\Request{    //认证信息    protected static $auth_info = [];    protected static $site_id = 0;    /**     * 获取请求参数     * @param array $params     * @param bool $filter     * @return array     */    public function params(array $params, bool $filter = true): array    {        $input = [];//        $filter_rule = $filter ? 'strip_tags' : '';        $filter_rule = '';        foreach ($params as $param) {            $key = $param[0];            // 解析name            if (strpos($key, '/')) {                [$name, $type] = explode('/', $key);            }else{                $name = $key;            }            $default = $param[1];            $item_filter = $param[2] ?? $filter;            $input[$key] = $this->paramFilter($this->param($key, $default, $filter_rule ?? ''), $item_filter);            //过滤后产生空字符串,按照默认值            if($input[$name] === '')            {                $input[$name] = $default;            }        }        return $input;    }    /**     * 参数过滤     * @param $param     * @param bool $filter     * @return array|string|string[]|null     */    public function paramFilter($param, bool $filter = true)    {        if (!$param || !$filter || !is_string($param)) return $param;        // 把数据过滤        $filter_rule = [            "/<(\\/?)(script|i?frame|style|html|body|title|link|metaf|alert|font|object|\\?|\\%)([^>]*?)>/isU",            "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",            "/\\b(select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile)\\b/is"        ];        return preg_replace($filter_rule, '', $param);    }    /**     * 获取登录用户的uid     * @param int $uid     * @return int|mixed|void     */    public function uid(int $uid = 0)    {        if ($uid > 0) {            static::$auth_info['uid'] = $uid;        } else {            return static::$auth_info['uid'] ?? 0;        }    }    /**     * 获取登录会员的id     */    public function memberId(int $member_id = 0)    {        if ($member_id > 0) {            static::$auth_info['member_id'] = $member_id;        } else {            return static::$auth_info['member_id'] ?? 0;        }    }    /**     * 站点id     * @param int|string|null $site_id     * @return int     */    public function siteId(int|string|null $site_id = 0)    {        if ($site_id > 0) {            static::$site_id = (int)$site_id;            return $site_id;        } else {            return static::$site_id ?? $this->defaultSiteId();        }    }    /**     * 用户账号     * @param string $username     * @return int|mixed     */    public function username(string $username = '')    {        if (!empty($username)) {            static::$auth_info['username'] = $username;            return $username;        } else {            return static::$auth_info['username'] ?? '';        }    }    /**     * 定义站点类型     * @param string $app_type     * @return mixed|string     */    public function appType(string $app_type = ''){        if (!empty($app_type)) {            static::$auth_info['app_type'] = $app_type;            return $app_type;        } else {            return static::$auth_info['app_type'] ?? '';        }    }    /**     * 获取管理端token     * @return array|string|null     */    public function adminToken(){        return $this->header(system_name('admin_token_name'));    }    /**     * 获取会员token     * @return array|string|null     */    public function apiToken(){        return $this->header(system_name('api_token_name'));    }    /**     * 平台site_id     * @return array|string|null     */    public function adminSiteId(){        return $this->header(system_name('admin_site_id_name'));    }    /**     * 客户端site_id     * @return array|string|null     */    public function apiSiteId(){        return 0;    }    /**     * 获取场景     * @return array|string     */    public function getChannel(){        return $this->header(system_name('channel_name'), ChannelDict::H5);    }    /**     * 获取默认站点     * @return int     */    public function defaultSiteId(){        return 0;    }    /**     * get传参追加值     * @param $data     * @return void     */    public function pushGet($data){        $param = $this->get();        $this->withGet(array_merge($param, $data));    }    /**     * header传参追加值     * @param $data     * @return void     */    public function pushHeader($data){        $param = $this->header();        $this->withHeader(array_merge($param, $data));    }    /**     * 授权信息     * @param $key     * @param $value     * @return mixed|string|void     */    public function auth($key, $value = ''){        if (!empty($value)) {            static::$auth_info[$key] = $value;        } else {            return static::$auth_info[$key] ?? '';        }    }}
 |