PHP Kohana 3.2.2多部分表单$ _POST未在MAC上设置但在Win上运行

时间:2012-10-16 10:40:09

标签: windows macos post multipartform-data kohana-3.2

我刚遇到一个奇怪的问题。我最近在Windows 7平台上使用Kohana 3.2.2 + jquery + html + WAMP开发了一个中等大小的网站。一切似乎工作正常,直到有人尝试从Mac平台访问页面。似乎当以多部分形式发送一些带有文件的数据时,全局变量$ _POST没有设置,即使在Web浏览器中调试数据时我也能看到DATA IS SET:|控制器无法通过任何$ _POST或request-> post()访问它。我重复一遍,当用户从Windows平台访问页面(在几个独立的客户端上测试)时,一切都很完美,但在从Mac平台访问时无法正常工作(在少数独立客户端上测试)。 它杀了我...... 我试图做的例子:
在视图中:
用户将数据放入输入(文本和文件类型)。数据通过enctype = multipart / form-data的形式发送到控制器的动作
在控制器中:
$ post = request-> post();
if($ post ['sometextinput']!='')抛出未知索引'sometextinput'的异常。

2 个答案:

答案 0 :(得分:0)

这太奇怪了。我每天都使用Kohana(我在Mac上开发)并且从来没有像这样的问题。你能发布你的控制器和视图吗?我将它插入一个虚拟项目,看看我是否可以复制该问题。如果我可以,我会尽我所能让它发挥作用。

编辑:

可能是一个奇怪的配置问题吗?

仅供我自己澄清。

您提交的表单包含输入字段和一个或多个文件上传 在Windows机器上查看时,您可以看到数据是在$ _POST或$ request-> post()中设置的。
在OSX上,控制器无法通过$ _POST或$ request-> post()查看;

在你的before方法中,确保你有“parent :: before();”。如果您已经调用parent :: before(),请尝试将其作为before()方法中的第一个语句。如果这不起作用,请尝试将其添加为最后一个语句。这是在黑暗中拍摄的,但值得一试。

如果你没有before()方法,那么添加一个并调用parent :: before();。

答案 1 :(得分:0)

我不确定你是否只是急着打上上面的例子,但实际应该是:

#$post = request->post(); //wouldn't recommend doing this
if($this->request->post('sometextinput') != '') throws exception of unknown index 'sometextinput'.