框架漏洞修复同步
parent
87e7d63c70
commit
cdec48a014
|
|
@ -682,6 +682,7 @@ class Request
|
||||||
// 判断URL里面是否有兼容模式参数
|
// 判断URL里面是否有兼容模式参数
|
||||||
$pathinfo = $_GET[$this->config['var_pathinfo']];
|
$pathinfo = $_GET[$this->config['var_pathinfo']];
|
||||||
unset($_GET[$this->config['var_pathinfo']]);
|
unset($_GET[$this->config['var_pathinfo']]);
|
||||||
|
unset($this->get[$this->config['var_pathinfo']]);
|
||||||
} elseif ($this->isCli()) {
|
} elseif ($this->isCli()) {
|
||||||
// CLI模式下 index.php module/controller/action/params/...
|
// CLI模式下 index.php module/controller/action/params/...
|
||||||
$pathinfo = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : '';
|
$pathinfo = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : '';
|
||||||
|
|
@ -702,6 +703,10 @@ class Request
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($pathinfo)) {
|
||||||
|
unset($this->get[$pathinfo], $this->request[$pathinfo]);
|
||||||
|
}
|
||||||
|
|
||||||
$this->pathinfo = empty($pathinfo) || '/' == $pathinfo ? '' : ltrim($pathinfo, '/');
|
$this->pathinfo = empty($pathinfo) || '/' == $pathinfo ? '' : ltrim($pathinfo, '/');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -809,9 +814,14 @@ class Request
|
||||||
return $this->server('REQUEST_METHOD') ?: 'GET';
|
return $this->server('REQUEST_METHOD') ?: 'GET';
|
||||||
} elseif (!$this->method) {
|
} elseif (!$this->method) {
|
||||||
if (isset($_POST[$this->config['var_method']])) {
|
if (isset($_POST[$this->config['var_method']])) {
|
||||||
$this->method = strtoupper($_POST[$this->config['var_method']]);
|
$method = strtolower($_POST[$this->config['var_method']]);
|
||||||
$method = strtolower($this->method);
|
if (in_array($method, ['get', 'post', 'put', 'patch', 'delete'])) {
|
||||||
|
$this->method = strtoupper($method);
|
||||||
$this->{$method} = $_POST;
|
$this->{$method} = $_POST;
|
||||||
|
} else {
|
||||||
|
$this->method = 'POST';
|
||||||
|
}
|
||||||
|
unset($_POST[$this->config['var_method']]);
|
||||||
} elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
|
} elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
|
||||||
$this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
|
$this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1034,7 +1044,7 @@ class Request
|
||||||
|
|
||||||
protected function getInputData($content)
|
protected function getInputData($content)
|
||||||
{
|
{
|
||||||
if (false !== strpos($this->contentType(), 'application/json') || 0 === strpos($content, '{"')) {
|
if (false !== strpos($this->contentType(), 'json')) {
|
||||||
return (array) json_decode($content, true);
|
return (array) json_decode($content, true);
|
||||||
} elseif (strpos($content, '=')) {
|
} elseif (strpos($content, '=')) {
|
||||||
parse_str($content, $data);
|
parse_str($content, $data);
|
||||||
|
|
@ -1320,7 +1330,8 @@ class Request
|
||||||
* @param array $data 数据源
|
* @param array $data 数据源
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function arrayReset(array &$data) {
|
public function arrayReset(array &$data)
|
||||||
|
{
|
||||||
foreach ($data as &$value) {
|
foreach ($data as &$value) {
|
||||||
if (is_array($value)) {
|
if (is_array($value)) {
|
||||||
$this->arrayReset($value);
|
$this->arrayReset($value);
|
||||||
|
|
@ -1523,7 +1534,7 @@ class Request
|
||||||
*/
|
*/
|
||||||
public function has($name, $type = 'param', $checkEmpty = false)
|
public function has($name, $type = 'param', $checkEmpty = false)
|
||||||
{
|
{
|
||||||
if (!in_array($type, ['param', 'get', 'post', 'request', 'put', 'file', 'session', 'cookie', 'env', 'header', 'route'])) {
|
if (!in_array($type, ['param', 'get', 'post', 'request', 'put', 'patch', 'file', 'session', 'cookie', 'env', 'header', 'route'])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1625,6 +1636,16 @@ class Request
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前是否JSON请求
|
||||||
|
* @access public
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isJson()
|
||||||
|
{
|
||||||
|
return false !== strpos($this->type(), 'json');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前是否Ajax请求
|
* 当前是否Ajax请求
|
||||||
* @access public
|
* @access public
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue