POST到POSTS到另一个表单的表单

时间:2009-11-24 15:41:49

标签: php forms post redirect

从外部网站,我需要提供一个表格,将POSTS数据发送到secure.domain.com/index.php。在index.php里面,我填写了一些隐藏的字段,而这些字段又需要发布到secure.domain.com/foo/index.php。我还设置了一些会话变量。

当我完成构建一个将存在于secure.domain.com/的用户门户网站时,这是一个临时重定向的原因。在几周内,我只需要将数据发布到secure.domain.com/index.php

但是,现在,我需要尝试自动将人员登录到secure.domain.com/foo/中。我不能只改变各个网站上表格的目标。

我如何用PHP实现这一目标?现在,我只是在secure.domain.com/index.php上发布了一个“点击这里完成登录”提交按钮,我希望摆脱那个按钮。

B计划是在按钮上方放置验证码,告诉管理层这个怪癖是出于人工验证目的而设计的,因为外部网站表单上没有空间。我宁愿不这样做。

修改

感谢所有答案。似乎没有办法使用PHP 。内部用户将使用具有非常严格的预配置noscript插件的瘦客户端,他们只需处理该按钮几周。

5 个答案:

答案 0 :(得分:5)

您可以使用cURL ...

执行此操作

示例:

$ch = curl_init(); // initialize curl handle
$url = "http://www.mydomain.com/test.php"; // URL to calc.cgi
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 10s
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=hi&name=fortega"); // fields to POST to calc.cgi
$data = curl_exec($ch); // run the whole process
curl_close($ch);

答案 1 :(得分:5)

您可以使用JavaScript自动发布第二个表单:

<script>document.forms[0].submit()</script>

这是我能想到的最简单的方法,但我不是网络专家;)

对于禁用JavaScript的用户,您还应该保留当前按钮并为其围绕<noscript>

编辑:如果您使用的是JQuery,Wookai的答案将是一个更好的解决方案。但请保留noscript按钮。

答案 2 :(得分:2)

您需要执行HTTP重定向并在其中包含POST数据,但据我所知,这是不可能的。

但是,有一个简单的解决方案:使用JavaScript自动提交当前表单。只需显示“请在重定向时等待”等消息,隐藏所有表单/按钮并在页面加载时提交(jQuery中的示例):

<script type='text/javascript'>
    $(function() {
        $('#yourHiddenForm').submit();
    });
</script>

正如其他答案中所述,请确保将当前按钮保留在<noscript>标记中,以禁用已禁用JavaScript的用户。

您可以考虑其他解决方案,例如复制所有POST数据并对您的第二个表单执行GET请求,或将所有数据存储在临时表中,将ID传输到您的第二个表单,并在那里加载相应的数据,但我想这意味着修改你的第二个表格,并不是真的可以接受。

答案 3 :(得分:1)

如果您不想使用CURL:

http://www.sajithmr.me/php-post-without-curl/

答案 4 :(得分:0)

您可以在第一个表单中填写第二个隐藏表单的ajax帖子。然后在第二个表单完成时添加一个javascript回调,它将执行yoursecondform.submit();