Php 重定向&;连续POST请求

Php 重定向&;连续POST请求,php,post,redirect,Php,Post,Redirect,我正在通过以下方式提交登录表单: $loginRequest = array( 'Username' => 'myUsername' 'Password' => 'myPassword' ); $request = new HTTP_Request2($url, HTTP_REQUEST2::METHOD_POST); $request->addPostParameter($loginReq

我正在通过以下方式提交登录表单:

$loginRequest = array(
                      'Username' => 'myUsername'
                      'Password' => 'myPassword'
);
$request = new HTTP_Request2($url, HTTP_REQUEST2::METHOD_POST);
$request->addPostParameter($loginRequest);
$response = $request->send();
POST成功,并且$
响应的输出为

</body>
<a id="refresh_url" href="/homepage">Loading...</a>
</body>

实际上你不能重定向然后发布


查看模式:这就是您应该尝试实现登录页面的方式。

如果您正在捕获帖子(用户名/密码),则通常使用PHP加载页面,如下所示:

header("Location: /homepage");
但是从您的示例来看,您似乎混淆了处理登录的客户端和服务器端。请看下面的简单代码:
它应该会有帮助。

您需要做两件事:

1) 您想转到“下一页”。您可以通过查找元刷新标记并转到目标URL来完成此操作。您可以使用简单的正则表达式从元刷新标记的内容中获取URL

2) 您希望下一页识别您已登录。如果这是一个普通的webapp,那么您需要解析原始请求中的Set Cookie:headers,并将其转换为Cookie:headers,以便在请求下一页时发送

如果您想进一步关注下一页的链接,您可能还需要寻找跨站点请求伪造安全令牌,许多web应用程序框架将其放入页面数据中,并且在发布时必须提供这些令牌,以抵御某些基于浏览器的会话劫持攻击


请注意,并不是每个站点在登录后都会进行元刷新--HTTP应用程序的凭据实际上并不是标准化的(因为web授权头并没有被普遍使用)。如果您想对大量不同的站点进行大量操作,您最好希望这些站点具有某种编程API,而不是求助于HTTP网页抓取。

不会导致重定向。你确定结果中没有
标记吗?@Barmar我刚检查过。是的,我已经更新了我的问题。他没有实现登录页面,他正在尝试自动登录页面,当你登录时页面重定向到“更新配置文件”页面。抱歉,我误读了问题。。。顺便说一句,在他想以新表单提交的重定向之后,不可能发布表单,即他重定向到的页面上的表单。@Barmar,没错。我正在自动登录页面。提交上一份表格后,如何才能提交新表格?@MarkKennedy您提交第一份表格的方式与提交第一份表格的方式相同。构造参数并向新表单的操作URL发送请求。检索响应cookie的PHP方法是什么样子的?另外,我是否会将所有Cookie发送到下一页?您必须从$response对象获取响应头,并查找设置的Cookie头。而且,是的,您希望将所有cookie发送到下一页。您可以在一个Cookie头中发送多个Cookie。我强烈建议阅读HTTP协议规范以了解更多信息:对于从事web工程的人来说,这确实是必读的。
<meta http-equiv="Refresh" content="0; URL=/vdesk/?langchar=en.iso-8859-1&amp;ui_translation=off&amp;gbrowsertype=">
header("Location: /homepage");