PHP - GET & POST Methods
The Hypertext Transfer Protocol (HTTP) is designed to enable communications between clients and servers. It works as a request-response protocol between a client and server. The two most common HTTP methods are:
- The GET method
- The POST method
The GET Method
The HTTP GET method is used to send information from client to server. Information sent via the GET method is visible to everyone because all variable names and values are displayed in the URL with page and the encoded information are separated by the ? character (known as QUERY_STRING). Each variable name and value pair is separated by ampersand (&) sign.
The HTTP GET method is restricted to send about 2000 characters. However, because the variables are displayed in the URL, it is possible to bookmark the page.
An example URL with two variables ("variable1" and "variable2") sent using GET method will be similar to:
http://www.test.com/index.htm?variable1=value1&variable2=value2
The data sent by HTTP GET method can be accessed using QUERY_STRING environment variable. The PHP provides $_GET associative array to access all the sent information using the GET method.
The HTML form
Consider the example below where test.php contains following code. This page will send the GET variables ("name" and "age") to the action script, welcome.php.
<html> <body> <form action="welcome.php" method="GET"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>
The test.php will look similar to:
The action script
Now, consider the welcome.php as the action script page which contains the following code:
<html> <body> <?php echo "Hello ". $_GET['name']. "<br>"; echo "You are ". $_GET['age']. " years old."; ?> </body> </html>
Result
If the following input is provided to the test.php:
When "submit" button is clicked, it will open the welcome.php script with the URL similar to (note the query string):
http://www.test.com/welcome.php?name=John&age=25
The URL contains the following result:
Example: GET method example
The example below demonstrates the above discussed concept.
<html> <body> <form action="welcome.php" method="GET"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>
The POST Method
The HTTP POST method is used to send information from clients and servers via HTTP headers. Information sent with the POST method is invisible to others. The data sent by POST method goes through HTTP header therefore the security depends on HTTP protocol. The secure HTTP can be used to make sure that the information is secure.
The HTTP POST method has no limits on the amount of information to send. However, because the variables are not displayed in the URL, it is not possible to bookmark the page.
The PHP provides $_POST associative array to access all the sent information using HTTP POST method.
The HTML form
Consider the example below where test.php contains following code. This page will send the POST variables ("name" and "age") to the action script, greeting.php.
<html> <body> <form action="greeting.php" method="POST"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>
The test.php will look similar to:
The action script
Now, consider the greeting.php as the action script page which contains the following code:
<html> <body> <?php echo "Hello ". $_POST['name']. "<br>"; echo "You are ". $_POST['age']. " years old."; ?> </body> </html>
Result
If the following input is provided to the test.php:
When "submit" button is clicked, it will open the greeting.php with the following result:
Example: POST method example
The example below demonstrates the above discussed concept.
<html> <body> <form action="greeting.php" method="POST"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>
The $_REQUEST Variable
The PHP $_REQUEST is a built-in super global variable which is always available in all scopes. The $_REQUEST in an associative array and by default it contains the contents of $_GET, $_POST and $_COOKIE. We will discuss about cookie variable in later section.
The HTML form
Consider the example below where test.php contains following code. This page will send the POST variables ("name" and "age") to the action script, greetings.php.
<html> <body> <form action="greetings.php" method="POST"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>
The test.php will look similar to:
The action script
Now, consider the greetings.php as the action script page which contains the following code:
<html> <body> <?php echo "Hello ". $_REQUEST['name']. "<br>"; echo "You are ". $_REQUEST['age']. " years old."; ?> </body> </html>
Result
If the following input is provided to the test.php:
When "submit" button is clicked, it will open the greetings.php with the following result:
Example: $_REQUEST example
The example below demonstrates the above discussed concept.
<html> <body> <form action="greetings.php" method="POST"> Name: <input type = "text" name = "name" /> Age: <input type = "text" name = "age" /> <input type = "submit" /> </form> </body> </html>