首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重定向到带有POST数据的新页面(PHP/Zend)

重定向到带有POST数据的新页面(PHP/Zend)
EN

Stack Overflow用户
提问于 2009-08-20 23:53:08
回答 5查看 35.3K关注 0票数 18

我正在尝试弄清楚如何重定向到新页面(不同的应用程序、控制器、操作)并维护当前的POST数据。

我的应用程序正在验证POST数据,如果满足特定条件,我希望重定向到不同的位置,但要确保POST数据作为POST数据传递到新页面。下面是一个粗略的例子:

代码语言:javascript
复制
POST /app1/example HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
    var1=foo&var2=bar

在我的示例(Zend_Controller_Action)中,我检查var1 == foo,如果是,我想用相同的POST数据重定向(302)到/app2/ exampleAction。像这样的东西吗?

代码语言:javascript
复制
HTTP/1.x 302 Found
Location: /app2/example
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
    var1=foo&var2=bar

我可以看到如何使用Zend_Http_Client创建一个新的超文本传输协议请求,但我并不打算简单地请求页面并显示内容。不管怎样,我应该继续使用Zend_Http_Client吗?目前,我正在玩这样的东西:

代码语言:javascript
复制
$this->getResponse()->setRedirect('/app2/example/', 302);
$this->getResponse()->setBody(http_build_query($this->_request->getPost()));

我确信我想要做的事情可能是通过一些诡计和恶作剧的方式实现的,但这绝对是在暗示我。任何帮助都是非常感谢的。

rk

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-21 00:11:30

与其将浏览器重定向到新位置,为什么不直接将请求从控制器转发到另一个控制器呢?

代码语言:javascript
复制
return $this->_forward("action", "controller", "module");
票数 16
EN

Stack Overflow用户

发布于 2009-08-21 09:17:50

我想你不能用POST做重定向。请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3

如前所述,您可以在会话中保存您的帖子数据。

票数 13
EN

Stack Overflow用户

发布于 2013-03-07 02:09:10

您可以使用控制器_request对象

代码语言:javascript
复制
$this->_request->setPost(array(
    'someKey' => 'someValue'
));

然后简单地使用_forward保护的方法

代码语言:javascript
复制
$this->_forward('yourAction', 'yourController', 'yourModule');

然后,在转发的控制器操作中只需调用

代码语言:javascript
复制
$aPost = $this->_request->getPost();
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1309456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档