【问题标题】:I can't use GET and POST at the same time in PHP我不能在 PHP 中同时使用 GET 和 POST
【发布时间】:2011-12-18 18:47:26
【问题描述】:

在我的页面顶部附近,我有这个:

<?php $id = $_GET['id']; ?>

然后我有一些从 POST 读取的表单检查条件:

if (isset($_POST['completeSubmit'])) {
        //code
}

最后,我有一个如下所示的 HTML 表单:

<form action="<?php echo $_SERVER['PHP_SELF']."?id=$id"; ?>" name="complete" method="post">
<input type="submit" id="textButton" name="completeSubmit" value="[mark as complete]">
</form> 

该页面最初是使用带有 id 变量的 GET 访问的,如下所示:

http://website.com/page.php?id=1

所有后续的表单提交(被重定向到同一页面)都会失败。我知道您不能在同一个请求中同时发送 GET 和 POST,但是看到我的表单正在使用 POST 提交到$_SERVER['PHP_SELF']."?id=$id",它不应该工作吗?这是我第一次尝试这个,所以很可能我忽略了一些微不足道的事情。

【问题讨论】:

  • 这应该可以正常工作——您可能需要调查其他区域是否存在可能的错误......
  • 是的,这应该可以。同时 GET 和 POST 确实是可能的。您可以尝试检查表单的 HTML 以查看 action 属性是否正确。转储 $_GET 和 $_POST 变量。在您的目标页面中也可能会有所帮助。
  • 通常 ID 和 NAME 属性应该相等...
  • @jeanre 很抱歉让您失望了,但同时 GET 和 POST 是完全不可能的。
  • @tandu 的答案在这里是最好的——虽然您确实不能同时使用 HTTP GET 和 HTTP POST,但应该可以从 POST 请求访问 $_GET 变量

标签: php forms post get


【解决方案1】:

您可以同时使用 get 和 post,但您不应该这样做。如果您想继续发送 ID,这很简单:

<form ...
   <input type="submit" ...
   <input type="hidden" name="id"
      value="<?php echo htmlspecialchars($_GET['id'], ENT_QUOTES); ?>" />
</form>

【讨论】:

  • +1 对于这个解决方案,只需将 $_GET['id'] 的初始值与您的发布请求一起发送。这是最干净的方式。
  • 我也试过了,但似乎没有用。我会继续调查,谢谢你的提示。
  • 让它工作,结果发现有一个小错误隐藏在周围。我选择了这种方法,因为它更干净。
  • 我知道这是一篇很老的帖子,但以防万一:为什么不应该同时使用 post 和 get ?我应该注意什么特别错误的地方吗?或者它只是被认为是“凌乱的”?我的情况:我正在接收外部生成的 POST(支付交易结果),并且只能编程接收它的位置。所以我在 URL 中放了一个参数来添加我自己的数据。
【解决方案2】:

当然,您不能同时使用 GET 和 POST 方法。

但是,您可以在使用 POST 方法发送表单时使用 查询字符串,该方法用于填充 $_GET 数组。

要查找某个错误,您必须提供更多信息。至少两件事:

  • HTML 表单的外观如何
  • 发布表单后,您在查询字符串中看到了什么。

还有错误...

  • 您是否在表单处理中使用任何标头重定向?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2021-04-27
    相关资源
    最近更新 更多