0

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

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

我没有太多要展示的代码方式。有一个简单的:

context.RewritePath(newPath);

一旦 HttpModule 确定了将请求发送到哪里。

编辑: 有趣的是,如果我var_dump(file_get_contents('php://input'));在 PHP 文件(这里描述的方法)中执行此操作,则会显示表单的内容。所以数据到达了 PHP 脚本,但没有到达 $_POST 数组。

4

1 回答 1

1

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

于 2010-05-19T15:51:30.793 回答