Php 函数中接收到错误的值
我用CakePHP 1.3.10创建的网站中出现了一些非常奇怪的情况,我不知道这是CakePHP问题还是PHP问题。我遇到的问题是控制器中的一个动作属于插件 这是一个简单的函数,它看起来像:Php 函数中接收到错误的值,php,cakephp,parameters,cakephp-1.3,iepngfix,Php,Cakephp,Parameters,Cakephp 1.3,Iepngfix,我用CakePHP 1.3.10创建的网站中出现了一些非常奇怪的情况,我不知道这是CakePHP问题还是PHP问题。我遇到的问题是控制器中的一个动作属于插件 这是一个简单的函数,它看起来像: function my_function($my_parameter) { $current_url = $this->params['url']['url']; //We get the current url (includes plugin/controller/action/para
function my_function($my_parameter) {
$current_url = $this->params['url']['url']; //We get the current url (includes plugin/controller/action/parameters) from Cake's $this->params array
$this->saveInfoToDB($current_url); //Function that saves the variable and other info to a table in the database - This function doesn't change the value of the variable, just saves it
}
此操作由网站中的几个链接调用,格式为“/my_plugin/my_controller/my_function/my_Parameter”。其想法是显示页面“my_函数”,并将当前url存储在数据库中
那么问题是什么呢?让我解释一下:
查看数据库中“saveInfoToDB”存储的注册表,我意识到存储“current_url”值的字段有时会有意外值(看起来是随机的)
normal值如下所示:/my_plugin/my_controller/my_function/3(整数从1到100)
错误的值看起来总是一样的:/my_plugin/my_controller/my_function/js/iepngfix.htc
你能看出什么问题是对的吗?我不知道为什么js/iepngfix.htc存储在那里!!!我之所以在示例中使用$my_参数,是因为我意识到js/iepngfix.htc是作为该函数中的参数传递的(因此它也显示在$this->params数组中)。但是为什么呢
我的网站中没有像/my_plugin/my_controller/my_function/js/iepngfix.htc这样的链接,那么这怎么可能发生呢?我不相信许多不同的用户会同意在浏览器中输入该url(顺便说一句,用户必须登录才能访问该链接)。显然,在某些时候,当用户浏览网站时,链接被“调用”,但我不知道如何
该网站使用了一些IE黑客攻击PNG图像(如iepngfix.htc、iepng_tilebg.js等),但我已经删除了它们,因此它们不会在任何地方被调用,甚至从服务器上删除了文件
我知道很难找到原因的答案,但是如果有人能给我一些建议,告诉我如何解决我的网站问题,找到问题的根源。我曾尝试重新创建此问题,但我只能使用IE访问一次用户访问的链接(例如/my\u plugin/my\u controller/my\u function/43),但尝试了更多次,没有再次发生。这是IE的问题吗?当用户调用正确的链接时,此浏览器是否调用该链接(错误的链接)
任何帮助都将不胜感激 我想我可能找到了罪犯。其中一个css文件中“隐藏”了此css代码:
body { behavior: url('js/iepngfix.htc') }
(我要说的是,这个设计是别人做的)
在删除该片段后,问题似乎不再发生。为什么?我不知道。。。为什么在函数中作为参数传递?我真的不知道。。。为什么它是随机发生的?我真的不知道
我相信所有这些都有一个解释,但我没有太多时间来进一步调查,我很高兴它现在起作用了 我想我可能找到了罪犯。其中一个css文件中“隐藏”了此css代码:
body { behavior: url('js/iepngfix.htc') }
(我要说的是,这个设计是别人做的)
在删除该片段后,问题似乎不再发生。为什么?我不知道。。。为什么在函数中作为参数传递?我真的不知道。。。为什么它是随机发生的?我真的不知道
我相信所有这些都有一个解释,但我没有太多时间来进一步调查,我很高兴它现在起作用了 您可能试图通过相对URL包含
iepngfix.htc
行为可能来自样式表中
例如:如果使用此URL链接了iepngfix.htc
../js/iepngfix.htc
您当前处于此页面:
http://example.com/mycontroller/myaction/
然后,iepngfix.htc
URL解析为:
http://example.com/mycontroller/js/iepngfix.htc
http://example.com/mycontroller/myaction/js/iepngfix.htc
这将给出一个错误404
但是如果您当前在此页面:
http://example.com/mycontroller/myaction/123
然后,iepngfix.htc
URL解析为:
http://example.com/mycontroller/js/iepngfix.htc
http://example.com/mycontroller/myaction/js/iepngfix.htc
最后一部分将作为参数发送到控制器操作(js/iepngfix.ht
)
如何解决这个问题
- 首先,你真的需要pngfix吗?您可能只需要在Internet Explorer 6及以下版本中使用它。除非您的目标是中国,否则Internet Explorer 6的市场份额不到1%()。即使这样,这种行为也有很多负面影响,导致性能非常差
- 检查你的网址!由于URL重写,您应该始终使用完整路径访问您的“资产”(CSS、JavaScript);i、 e.
代替/js/myscript.js
或js/myscript.js
。/js/myscript.js
iepngfix.htc
行为可能来自样式表中
例如:如果使用此URL链接了iepngfix.htc
../js/iepngfix.htc
您当前处于此页面:
http://example.com/mycontroller/myaction/
然后,iepngfix.htc
URL解析为:
http://example.com/mycontroller/js/iepngfix.htc
http://example.com/mycontroller/myaction/js/iepngfix.htc
这将给出一个错误404
但是如果您当前在此页面:
http://example.com/mycontroller/myaction/123
然后,iepngfix.htc
URL解析为:
http://example.com/mycontroller/js/iepngfix.htc
http://example.com/mycontroller/myaction/js/iepngfix.htc
最后一部分将作为参数发送到控制器操作(js/iepngfix.ht
)
如何解决这个问题
- 首先,你真的需要pngfix吗?您可能只需要在Internet Explorer 6及以下版本中使用它。除非您的目标是中国,否则Internet Explorer 6的市场份额不到1%()。即使这样,这种行为也有很多负面影响,导致性能非常差
- 检查你的网址!由于URL重写,您应该始终