多级控制器动态路由,参数id验证是否正整数时,如果/id 是逗号隔开会报错“控制器不存在:app\api\controller\V1"”

来源:9-3 实现Token身份权限体系

qq_青萍之末_2

2020-02-21

多级控制器动态路由,参数id验证是否正整数时,如果/id 是逗号隔开会报错“控制器不存在:app\api\controller\V1",二级控制器目录是小写v1,但是报错时是大写。
访问地址:http://wxshop.com/api/v1/banner/a,1
路由:Route::get(‘api/:version/banner/:id’,‘api/:version.Banner/getBanner’);
查找后发现是tp更新一次漏洞时
在think\route\dispatch\Url类的parseUrl方法,解析控制器后加上

if (KaTeX parse error: Expected 'EOF', got '&' at position 12: controller &̲& !preg_match('…/’, $controller)) {
throw new HttpException(404, ‘controller not exists:’ . $controller);
}

写回答

1回答

7七月

2020-02-22

你访问任何一个网站,都不会在路径里 放逗号

0
1
qq_青萍之末_2
http://wxshop.com/api/v1/banner/1.1当参数是小数时,也报控制器不存在:app\api\controller\V1,ExceptionHandler类里面的render方法参数是基类 Exception。尝试解决:路由限制pattern(['id'=>'[\d.]+'])ern(['id'=>'\d+'])后,如果参数是字母也报控制器不存在:app\api\controller\V1,
2020-02-24
共1条回复

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程