我不能在PHP中同时使用GET和POST

时间:2011-10-31 14:09:17

标签: php forms post get

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

<?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"不应该有效吗?这是我第一次尝试这样做,所以我很可能忽略了一些微不足道的事情。

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

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

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

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

和错误...

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