Я не могу использовать GET и POST одновременно в PHP

В верхней части моей страницы у меня есть следующее:

<?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> 

Первоначально доступ к странице осуществляется с помощью GET с переменной id следующим образом:

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

Все последующие сообщения формы (которые перенаправляются на ту же страницу) терпят неудачу. Я знаю, что вы не можете отправлять GET и POST в один и тот же запрос, но видя, что моя форма отправляется в $_SERVER['PHP_SELF']."?id=$id" используя POST, не работает ли она? Это мой первый раз, пытаясь сделать это, поэтому вполне возможно, что я забыл что-то тривиальное.

Вы можете использовать get и post в одно и то же время, но не должны. Если вы хотите продолжить отправку идентификатора, это так же просто, как:

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

Конечно, вы не можете одновременно использовать методы GET и POST.

Однако вы можете использовать строку запроса при отправке формы с использованием метода POST, который используется для заполнения массива $ _GET.

Чтобы найти определенную ошибку, вам нужно предоставить дополнительную информацию. По крайней мере, 2 вещи:

  • как выглядит HTML-форма
  • что вы увидите в строке запроса после отправки формы.

и errr …

  • используете ли вы какие-либо переадресации заголовков в обработке формы?