views:

37

answers:

2

When I do http POST request via Web form, Is there any difference(practically or theoretically) between parameters specified in the URL and parameters passed with form on the server side?

Can I do whole POST with url parameters and expect same result as with form inputs?

Like:

  <form action="/?id=2" method="post">
      <input type="text" name="name" value="John"/>
      <input type="submit" value="submit"/>
  </form>

Or:

  <form action="/?id=2&name=John" method="post">
      <input type="submit" value="submit"/>
  </form>

Thanks.

+1  A: 

You should read this article on the differences between GET and POST (GET is when you put your parameters in the URL, and POST is when you put your parameters in the form).

Also, this question has already been answered here on StackOverflow

Gabriel McAdams
+1  A: 

The references Gabriel and BrokenGlass informed are really cool, but let me give you me 2 cents.

I'm supposing you already know a little about how retrieve form sent information on server-side. If you don't, start there and the answers will come faster than you could imagine.

Well, parameters sent on URL or form's attribute action are GET data parameters. They will be parsed and make available as such. Period.

The input fields from a form with method POST are sent as POST data and are parsed and available as such.

From examples you gave, and supposing you are using PHP, we could retrieve the following:

Example 1

$_GET['id']
$_POST['name']

Example 2

$_GET['id']
$_GET['name']

Hope the concepts are clear.

Dave
+1 - many sites don't care whether parameters arrive in the query string or request body (e.g. anything that uses on Java's HttpServletRequest.getParameter() or PHP's $_REQUEST), but it's *possible* to distinguish - therefore you can't *expect* the same behaviour in the general case. It may well work for a given site, though.
SimonJ
Yeap, that's true. This is why I made some considerations on examples. For general case, even cookies are an extension on HTTP protocol and can be accessed via general request resources. But for sake of clearness on this subject I think we should get down on the specifications. GET and POST are distint methods due distint purposes (along other methods like HEAD, PUT, DELETE...). Each HTTP method has it's own purpose, and all software in the middle process (like HTTP server) may have different ways to thread them (and data wrapped in each one).
Dave