Если целью вызова .NET HttpModule RewritePath является файл PHP, массив $ _POST пуст - PullRequest
0 голосов
/ 19 мая 2010

У нас есть приложение, работающее на IIS 6, которое использует собственный HttpModule для перезаписи URL. Это прекрасно работает (хорошо сделано нами), за исключением случая, когда назначение Context.RewritePath представляет собой файл .php. Файл php выполняется должным образом, однако коллекция $ _POST пуста, что означает, что она не может получить доступ ни к каким формам, переданным в переписанные URL-адреса. Проблема не существует при перезаписи в файлы .aspx, так как коллекция Request.Form в порядке.

Поэтому мой вопрос состоит из двух частей: Почему коллекция $ _POST не заполняется? Есть ли способ обеспечить правильное заполнение коллекции .php $ _POST после перезаписи?

Мне нечего показать в коде. Там просто:

context.RewritePath(newPath);

как только HttpModule определил, куда отправить запрос.

Edit: Интересно, что если я сделаю var_dump(file_get_contents('php://input')); в файле PHP (метод , описанный здесь ), отобразится содержимое формы. Таким образом, данные достигают сценария PHP, но не массива $ _POST.

1 Ответ

1 голос
/ 19 мая 2010

Перенаправление превращает действие POST в действие GET, что означает, что все первоначально отправленные параметры POST будут потеряны.Вам нужно будет использовать метод обратного канала (например, сессии), чтобы передать переменные.

...