我正在使用index
。我只是检查了一些随机技巧,并将网址opencart 2.0.2.0
写入index.php?route=common/home
。它显示了一个错误index.php?route=common/home%00
不明白为什么会发生这种情况。任何人都可以请帮助我知道为什么会发生这个错误,我该如何解决呢?
答案 0 :(得分:1)
经过一番研究后,我发现它实际上是PHP中的一个错误(报告here @ 2/4/2015并已修复)
你的问题是什么?
空字节(%00)
导致PHP字符串中的截断(这是正常的,我认为因为PHP字符串是通过c字符串实现的)
那么在OC中发生了什么?
<OC_ROOT>\system\engine\action.php
(您收到错误的文件),类Action
驻留在那里,它负责解析路由参数,确定要加载的相应控制器+该控制器中的哪个函数用于调用和保留方法参数,以便稍后在执行期间传递$file = DIR_APPLICATION . 'controller/' . str_replace(array('../', '..\', '..'), '', $path) . '.php';
.php
附加到通过解析路由参数构造的$path
变量来加载控制器文件,因为您在路由中添加了一个额外的空字节,$file
看起来像这样:bla bla bla/common/home\0.php
,\0
导致剥离导致不存在的文件的.php
路径,这就是OC加载错误页面的原因 如何解决
只需关闭项目中的警告,如果您的意思是&#34;我该如何解决?&#34;使它工作,然后在解析它之前从同一个文件中删除路由参数中的空字节,但我不建议你这样做,因为它处理了黑客,你将解除它的处理:d
答案 1 :(得分:0)
这只是对这个opencart版本的警告。要快速解决方案,您将添加“error_reporting(0);”在__construct函数中。
谢谢。