2010-05-19 52 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