I can't use GET and POST at the same time in P

2019-01-28 12:58发布

问题:

Near the top of my page, I have this:

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

Then I have some form check conditionals that read from POST:

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

And finally, I have an HTML form which looks like this:

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

The page is initially accessed by using GET with an id variable like this:

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

All subsequent form submissions (which get redirected to the same page) fail. I know you can't send both GET and POST in the same request, but seeing as my form is submitting to $_SERVER['PHP_SELF']."?id=$id" using POST shouldn't it work? This is my first time trying this so it is quite possible I've overlooked something trivial.

回答1:

You can use get and post at the same time, but you shouldn't. If you want to continue to send the ID this is as simple as:

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


回答2:

Of course you can not use GET and POST methods simultaneously.

However you can use a query string while sending a form using POST method, which being used to populate $_GET array.

To find a certain error you have to provide more info. At least 2 things:

  • how does HTML form look
  • what do yo see in the query string after posting the form.

and errr...

  • do you use any header redirects in the form processing?


标签: php forms post get