Я пытаюсь выяснить, как перенаправить на новую страницу (другое приложение, контроллер, действие) и сохранить текущие данные POST.Перенаправление на новую страницу с данными POST (PHP/Zend)
Мое приложение проверяет данные POST и, если определенные критерии выполнены, я хочу перенаправить в другое место, но убедитесь, что данные POST переданы как данные POST на эту новую страницу. Вот грубый пример:
POST /app1/example HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
var1=foo&var2=bar
В моей exampleAction
(Zend_Controller_Action), я проверяю, если var1 == foo
, и если это не я хочу, чтобы перенаправить (302) в/app2/например, с того, что те же данные POST. Что-то может быть так?
HTTP/1.x 302 Found
Location: /app2/example
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
var1=foo&var2=bar
Я могу видеть, как создать новый запрос HTTP с использованием Zend_Http_Client, но я не ищу просто запросить страницу и отображать содержимое. Должен ли я по-прежнему искать Zend_Http_Client? На данный момент я играю с вещами, как это:
$this->getResponse()->setRedirect('/app2/example/', 302);
$this->getResponse()->setBody(http_build_query($this->_request->getPost()));
Я уверен, что я хочу сделать, это возможно с помощью некоторых средств обмана и демона-скакать, но это определенно намекая меня. Любая помощь приветствуется.
- гк
Я пробовал это и, похоже, заблокировал приложение. Я не вижу никакой активности запроса (используя LiveHTTPHeaders для Firefox), и мой поток httpd просто всплескивает процессор (если смотреть сверху). Я добавлю некоторые записи в код, чтобы увидеть, действительно ли он пойман в бесконечном цикле или нет, потому что мне бы очень хотелось, чтобы это было ответом. – angrychimp
Ну, во-первых, используйте set_time_limit (5) или что-то подобное прямо перед вызовом, так что php будет разбиваться с ошибкой через 5 секунд времени выполнения, вы должны увидеть «цикл» со стеком , Кроме того, не собирается делать другой HTTP-запрос, диспетчер просто изменит параметры контроллера/модуля/действия в Zend_Controller_Request и redispatch. Если по какой-то причине другое действие пересылает или делает что-то странное, что возвращается к исходному действию, вы можете получить цикл. – gnarf
Ну, похоже, это было именно то, что я хотел, за исключением того, что по какой-то причине у нас нет правильно настроенных модулей. У нас есть какая-то дурацкая настройка, в которой каждый доступ к модулю настроен как модуль по умолчанию, и он не знает о других модулях. Идите фигуру. Спасибо, хотя для проверки, gnarf! – angrychimp