【问题标题】:How can I carry POST data to a new page in PHP without a form?如何在没有表单的情况下将 POST 数据传送到 PHP 中的新页面?
【发布时间】:2010-08-14 22:16:47
【问题描述】:

编辑:我可以通过询问是否有办法做类似header('Location: /msg_form.php?error=3') 的事情来简化这个问题,除了通过 POST 发送 error=3 和所有其他表单信息。我认为简短的回答是否定的,但还有其他方法可以做事。


我在我的网站中集成了一个消息系统,该系统使用 GET 处理所有事情,但我需要向大量人员列表发送消息,因此我不得不改用 POST。但是,当您提交消息表单并且出现错误时,这会破坏系统。表单提交到处理页面,如果出现错误,它应该重定向回表单页面,但现在转储了所有 POST 信息。 :(

难道我没有办法模拟从 php 处理页面提交的表单吗?我认为 curl 可以为我做到这一点,但到目前为止,它似乎只是将 POSTS 发送到地狱,但实际上并没有重定向浏览器。

我想我可以让它打印出一个带有一些隐藏变量的表单,然后用 html 或 javascript 重定向,但这似乎很愚蠢。我也可以将处理器直接集成到表单页面中,我可能会这样做,但我不想重新安排太多东西。

【问题讨论】:

    标签: php post redirect curl


    【解决方案1】:

    通常,我会使用同一个页面进行表单输入和表单处理。在页面顶部,您检查 POST 变量并进行相应处理。我建立了一个有任何错误的字符串。然后在处理代码的最后,如果有错误,重新显示有错误的入口页面。否则,重定向或显示感谢页面等。

    您还可以使用 jQuery,在停留在页面上的同时提交表单,并处理响应(显示返回的错误,或重定向)。有很多方法可以解决您的问题。

    【讨论】:

      【解决方案2】:

      嗯.. 我不确定你要做什么.. 但如果你需要从 php 发送 POST,你可以用 curl 来做这样的事情:

      <?php
       $ch = curl_init('http://mysite.com/index.php');
       curl_setopt ($ch, CURLOPT_POST, 1);
       curl_setopt ($ch, CURLOPT_POSTFIELDS, "option=com_content&task=blogcategory&id=24&Itemid=55");
       curl_exec ($ch);
       curl_close ($ch);
      ?>
      

      【讨论】:

      • 但这不会重定向浏览器,它只是挂在我的处理页面上。
      • 那是因为 curl 不用于重定向,它所做的是调用 url 并打印出结果,无论如何.. 如果您需要使用 curl 来调用您网站中的页面,我会说如果你在那里有设计问题,你可能想使用另一种方法。通常当表单出现错误时,处理页面不会重定向浏览器,而是使用 $_POST 重新创建表单来填充表单并指出发现的错误。
      • curl 是否应该像 echo 和 AJAX 调用一样从它调用的页面中打印出结果?因为我得到的只是一个空白页。
      • yes.. 它会打印出结果,但您也可以将其保存到变量中。 fr2.php.net/manual/en/curl.examples-basic.php,如果它没有做任何事情,好吧.. pff.. 尝试做一个简单的调用(以“hello world”页面为例)来测试问题是否出在你的代码中
      【解决方案3】:

      您可以将 POST 数据保存在会话变量中。

      【讨论】:

        【解决方案4】:

        您可以使用会话,这是由使用 cookie 的服务器提供的服务。或者您可以通过 http 传输(更长的解决方案)发送您的信息...

        【讨论】:

        • http传输是什么意思?或者这是一些不切实际的事情?
        • POST 数据的发送方式与 GET 不同。看这里 (developers.sun.com/mobility/midp/ttips/HTTPPost) 从理论上讲,如果你不想使用表单,你的 php 代码可以发送 POST 数据,在 HTTP 通信中写入它们。
        【解决方案5】:

        您可以将 POST 数据保存在 cookie 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-19
          • 1970-01-01
          • 1970-01-01
          • 2016-08-16
          • 1970-01-01
          相关资源
          最近更新 更多