Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用POST和PHP发布表单数据_Php_Redirect_Curl - Fatal编程技术网

使用POST和PHP发布表单数据

使用POST和PHP发布表单数据,php,redirect,curl,Php,Redirect,Curl,我已经研究了几个小时了,但仍然不知所措 我有一个带有链接的PHP页面PAGE1.PHP,当用户单击该链接时,PHP页面需要从数据库读取一些数据,并使用post将这些数据发布到第三方站点 我使用CURL成功地做到了这一点,但问题是,尽管数据已发布,并且第三方页面加载正确,但浏览器中的URL仍然显示为PAGE1.PHP,而不是我发布到的第三方URL 有没有办法让我做到这一点 我可以选择在PAGE1.PHP上创建一个表单,将从数据库读取的数据设置为隐藏,将链接设置为提交。我还没有尝试,但应该可以工作,

我已经研究了几个小时了,但仍然不知所措

我有一个带有链接的PHP页面PAGE1.PHP,当用户单击该链接时,PHP页面需要从数据库读取一些数据,并使用post将这些数据发布到第三方站点

我使用CURL成功地做到了这一点,但问题是,尽管数据已发布,并且第三方页面加载正确,但浏览器中的URL仍然显示为PAGE1.PHP,而不是我发布到的第三方URL

有没有办法让我做到这一点

我可以选择在PAGE1.PHP上创建一个表单,将从数据库读取的数据设置为隐藏,将链接设置为提交。我还没有尝试,但应该可以工作,但这意味着我从数据库读取的数据可以由用户通过查看源来读取


有什么办法可以做到这一点吗

浏览器中的URL正确地显示了您的原始URL,因为这是浏览器请求的,也是为请求服务的;您的PHP页面在后台发出POST请求以获取数据,但它随后将数据发送回浏览器


要获得我认为您想要的结果,您需要重定向浏览器以生成帖子。你关心隐藏数据的问题是正确的;听起来您可能需要做一些架构工作来解决这个问题。

浏览器中的URL正确地显示了您的原始URL,因为这是浏览器请求的内容,也是为请求服务的内容;您的PHP页面在后台发出POST请求以获取数据,但它随后将数据发送回浏览器

要获得我认为您想要的结果,您需要重定向浏览器以生成帖子。你关心隐藏数据的问题是正确的;听起来您可能需要做一些架构工作来解决这个问题。

您可以使用它来对POST数据进行真正的重定向

请参考一些资料来源

您可以使用,以便使用POST数据进行真正的重定向

请参考一些资料来源


问题是,当您使用CURL进行发布时,发布的是您的web服务器,而不是用户的浏览器。因此,如果正在使用任何会话或cookie,它们将不会继续

我会按照你说的做,创建一个隐藏的表单,并以这种方式发布数据。不过,您可以很聪明,在jQuery中编写document.ready,一旦加载了隐藏表单,就可以为用户发布它。虽然他们仍然有一个很小的机会来查看源代码,但这将是一个更加流线型的窗口

<script>
$(document).ready(function() {
    $('#hiddenForm').submit();
});
</script>
编辑完整示例:

<?

  $urlToPostTo = 'http://www.thirdPartyDomain.com/login';
  $varsToPost['user'] = 'username';
  $varsToPost['pass'] = 'password';

  ?>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
        $('#hiddenForm').submit();
    });
  </script>
  <?

  echo '<form id="hiddenForm" action="'.$urlToPostTo.'" method="post">';

  /* create a hidden input for each var in 'varsToPost' */
  foreach($varsToPost as $varName=>$varValue) {
    echo '<input type="hidden" name="'.$varName.'" value="'.$varValue.'">';
  }

  echo '</form>';

?>
只要在$varsToPost数组中添加/删除变量,它们就会自动插入。我想如果你传递的是密码/敏感数据,你可以在表单提交之前用php加密并用js解密。这仍然会让您打开,因为任何人都可以访问您的解密功能,但它会屏蔽您的数据,一目了然


即便如此,这种表单提交发生得非常快,很难说它是在偷偷摸摸。

问题是,当您使用CURL发布时,发布的是您的web服务器,而不是用户的浏览器。因此,如果正在使用任何会话或cookie,它们将不会继续

我会按照你说的做,创建一个隐藏的表单,并以这种方式发布数据。不过,您可以很聪明,在jQuery中编写document.ready,一旦加载了隐藏表单,就可以为用户发布它。虽然他们仍然有一个很小的机会来查看源代码,但这将是一个更加流线型的窗口

<script>
$(document).ready(function() {
    $('#hiddenForm').submit();
});
</script>
编辑完整示例:

<?

  $urlToPostTo = 'http://www.thirdPartyDomain.com/login';
  $varsToPost['user'] = 'username';
  $varsToPost['pass'] = 'password';

  ?>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
        $('#hiddenForm').submit();
    });
  </script>
  <?

  echo '<form id="hiddenForm" action="'.$urlToPostTo.'" method="post">';

  /* create a hidden input for each var in 'varsToPost' */
  foreach($varsToPost as $varName=>$varValue) {
    echo '<input type="hidden" name="'.$varName.'" value="'.$varValue.'">';
  }

  echo '</form>';

?>
只要在$varsToPost数组中添加/删除变量,它们就会自动插入。我想如果你传递的是密码/敏感数据,你可以在表单提交之前用php加密并用js解密。这仍然会让您打开,因为任何人都可以访问您的解密功能,但它会屏蔽您的数据,一目了然


即便如此,这种表单提交的速度非常快,很难说它是在偷偷摸摸。

Hmm。。关于我需要做什么样的建筑工作有什么想法吗?始终记住,我不能修改第三方网站。第三方网站的变化取决于我发布的数据。@DavidV:很难确定您是否对第三方网站没有任何控制权;如果您可以通过某种方式使用隐藏数据从PHP发布文章,然后为用户的浏览器提供指向该文章确定的页面的非敏感链接,那么这可能会奏效。这实际上完全取决于你正在处理的第三方网站如何处理这类事情,以及他们是否要求用户拥有你正在处理的敏感数据,或者是否有办法绕过这一要求。将使用隐藏形式-不是最好的安全性,但我用它已经足够好了。。通过obs的安全性

安全是可以的。再次感谢。嗯。。关于我需要做什么样的建筑工作有什么想法吗?始终记住,我不能修改第三方网站。第三方网站的变化取决于我发布的数据。@DavidV:很难确定您是否对第三方网站没有任何控制权;如果您可以通过某种方式使用隐藏数据从PHP发布文章,然后为用户的浏览器提供指向该文章确定的页面的非敏感链接,那么这可能会奏效。这实际上完全取决于你正在处理的第三方网站如何处理这类事情,以及他们是否要求用户拥有你正在处理的敏感数据,或者是否有办法绕过这一要求。将使用隐藏形式-不是最好的安全性,但我用它已经足够好了。。通过默默无闻的安全是可以做到这一点的。再次感谢。嗯。。你确定你能做到吗?从我读到的内容来看,标题函数不支持POST,因为它们被发送到浏览器中。在谷歌搜索之后,是的,不幸的是,PHP无法直接实现。但是如果javascript不是问题,您可以创建一个自动提交表单。看看吧:@Col.Shrapnel,至少我试过贡献,而不是仅仅发表不好的评论。这就是这个蹩脚网站的目的:贡献。教育、思维、常识和经验是无人关心的。去吧,你会在这里得到很多名声的,教育?对不起,但我真的认为你不能谈这个。你对一个严肃的回答作了非建设性的评论,我显然在跟进。停在这里,不会给巨魔喂食,也不会引起毫无意义的燃烧。。你确定你能做到吗?从我读到的内容来看,标题函数不支持POST,因为它们被发送到浏览器中。在谷歌搜索之后,是的,不幸的是,PHP无法直接实现。但是如果javascript不是问题,您可以创建一个自动提交表单。看看吧:@Col.Shrapnel,至少我试过贡献,而不是仅仅发表不好的评论。这就是这个蹩脚网站的目的:贡献。教育、思维、常识和经验是无人关心的。去吧,你会在这里得到很多名声的,教育?对不起,但我真的认为你不能谈这个。你对一个严肃的回答作了非建设性的评论,我显然在跟进。停在这里,不会给巨魔喂食,也不会引起毫无意义的燃烧。哎哟。。虽然我能学得很快,但我对javascript知之甚少。你能至少让我知道我需要做什么吗?我不想浪费你太多时间。嘿,谢谢。。。我会调查的。你帮了大忙,查德:锻炼得很好-再次感谢查德。真的很感激。哎哟。。虽然我能学得很快,但我对javascript知之甚少。你能至少让我知道我需要做什么吗?我不想浪费你太多时间。嘿,谢谢。。。我会调查的。你帮了大忙,查德:锻炼得很好-再次感谢查德。真的很感激。找几个小时?你应该完全失明。已经有成千上万个类似的问题了。是的,我找了好几个小时了。。我什么也没找到——特别是由于我的要求,浏览器中的URL仍然显示为PAGE1.PHP,而不是我发布到的第三方URL。。我试过CURL,我试过PHP重定向,试过PEAR,但是godaddy不允许它,还有更多。。。我甚至不是开发人员找几个小时?你应该完全失明。已经有成千上万个类似的问题了。是的,我找了好几个小时了。。我什么也没找到——特别是由于我的要求,浏览器中的URL仍然显示为PAGE1.PHP,而不是我发布到的第三方URL。。我试过CURL,我试过PHP重定向,试过PEAR,但是godaddy不允许它,还有更多。。。我甚至不是开发人员