mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2025-12-11 02:12:48 +00:00
192 lines
4.6 KiB
PHP
192 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace app;
|
|
use app\dict\common\ChannelDict;
|
|
|
|
/**
|
|
* Class Request
|
|
* @package app
|
|
*/
|
|
// 应用请求对象类
|
|
class Request extends \think\Request
|
|
{
|
|
//认证信息
|
|
protected static $auth_info = [];
|
|
|
|
/**
|
|
* 获取请求参数
|
|
* @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|iframe|frame|style|html|body|title|link|meta|alert|font|object|\\?|\\%)([^>]*?)>/isU",
|
|
"/(<[^>]*?)on[a-zA-Z]+\s*=[\s\"'][^\"']*?([\s\"'][^>]*?>)/isU",
|
|
"/\\b(select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile)\\b/is"
|
|
];
|
|
|
|
$replace = [
|
|
'', // 移除整个危险标签
|
|
'$1$2', // 仅移除 onxxx 属性,保留标签
|
|
''
|
|
];
|
|
return preg_replace($filter_rule, $replace, $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;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 用户账号
|
|
* @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'));
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取场景
|
|
* @return array|string
|
|
*/
|
|
public function getChannel(){
|
|
return $this->header(system_name('channel_name'), ChannelDict::H5);
|
|
}
|
|
|
|
/**
|
|
* 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] ?? '';
|
|
}
|
|
}
|
|
}
|