2010-05-19 51 views
0

我们有一个在IIS 6上运行的应用程序,它使用自定义的HttpModule来重写URL。除非Context.RewritePath目标文件是.php文件,否则这种方法效果很好(完成得很好)。 php文件按预期执行,但$ _POST集合为空意味着它无法访问任何提交给重写URL的表单。由于Request.Form集合没有问题,因此在重写.aspx文件时不存在此问题。

因此,我的问题有两个部分: 为什么$ _POST集合未被填充? 有没有办法确保.php $ _POST集合在重写后正确填充?

我没有太多的代码的方式显示。这只是一个简单的问题:

context.RewritePath(newPath); 

一旦HttpModule已经找到了发送请求的位置。

编辑: 有趣的是,如果我在PHP文件做var_dump(file_get_contents('php://input'));(方法described here)形式的内容被显示。所以数据到达PHP脚本而不是$ _POST数组。

回答

1

重定向会将POST操作转换为GET操作,这意味着最初发送的任何POST参数都会丢失。您必须使用backchannel方法(例如会话)才能传递变量。

+0

感谢您的快速回答。 .aspx页面如何访问表单集合但.php文件不能? – jammus 2010-05-19 16:18:36

+0

我的猜测是ASP.NET透明地实现了backchannel。 – 2010-05-19 16:31:56

+0

好的旧ASP.NET。有趣的调用file_get_contents('php:// input')表明POST数据正在通过某种方式获得。只是$ _POST数组没有被填充。 – jammus 2010-05-20 08:15:32