欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
CodeIgniter4 分页器增加输入框输入页码后跳转的功能 预防文件上传漏洞,配置nginx限制php执行目录
未知  CodeIgniter4中传统路由模式控制器退回默认方法时有可能会丢失第一个参数
[ 发布日期:1年前 (2023-11-16) ]   [ 来自:本站原创 ] [分类:其它运维与编程]
在开发日志列表显示界面时发现路由参数丢失的现象。
在CodeIgniter4的传统路由模式下,当控制器退回到默认方法时,在有些情况下会发生第一个参数丢失问题。
主要表现在第一个参数 为 0 false  这一类判断为假的值时。


 
设置为增强路由模式时没有这个问题。那应该就是传统路由模式的一个bug了。

因为增强路由不支持 _remap 方法特性,这边需要使用传统路由,所以需要调查解决该bug。

在分析代码后找到了的出现问题地方,涉及一个文件的一个方法修改如下:
文件: System/Router/AutoRouter.php
方法:public function getRoute(string $uri, string $httpVerb): array

// Use the method name if it exists.
        // If it doesn't, no biggie - the default method name
        // has already been set.
        if (! empty($segments)) {            
            //$this->method = array_shift($segments) ?: $this->method;
            $methodParam = array_shift($segments);
            if($methodParam !== null)
                $this->method = $methodParam;

        }

 蓝色字体是原始代码,红色字体是新添加代码
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/262
复制引用地址https://www.rickw.cn/trackback/262/GBK
[ 分类:其它运维与编程  | 查看:250 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5