搜索
系统检测到您的用户名不符合规范:

解决input()函数将uri做为参数的问题

浏览:729 发布日期:2019年01月09日 分类:ThinkPHP5专区 关键字: input
在TP5 5.0.23版本上input助手函数会将uri做为参数获取,导致很多人在使用时产生疑惑,甚至将input()直接做为参数进行数据库操作时报错。我也遇到这个问题,最终通过修改助手函数来解决。

文件位置:thinkphp/helper.php
第113行起,修改input助手函数if (!function_exists('input')) {
/**
* 获取输入数据 支持默认值和过滤
* @param string $key 获取的变量名
* @param mixed $default 默认值
* @param string $filter 过滤方法
* @return mixed
*/
function input($key = '', $default = null, $filter = '')
{
if (0 === strpos($key, '?')) {
$key = substr($key, 1);
$has = true;
}
if ($pos = strpos($key, '.')) {
// 指定参数来源
list($method, $key) = explode('.', $key, 2);
if (!in_array($method, ['get', 'post', 'put', 'patch', 'delete', 'route', 'param', 'request', 'session', 'cookie', 'server', 'env', 'path', 'file'])) {
$key = $method . '.' . $key;
$method = 'param';
}
} else {
// 默认为自动判断
$method = 'param';
}
if (isset($has)) {
$return = request()->has($key, $method, $default);
} else {
// return request()->$method($key, $default, $filter);
// 判断uri是否在结果里,如果有,则剔除
$return = request()->$method($key, $default, $filter);
}
// 获取Server请求参数
$req = request()->server();
if (is_array($return) && isset($req['REDIRECT_URL']) && array_key_exists($req['REDIRECT_URL'],$return)) {
unset($return[$req['REDIRECT_URL']]);
}
return $return;
}
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
liuzhen153
积分:292 等级:LV1
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /