# Handling HTTP Methods

PHP supports the HTTP GET and POST methods, and it provides a way to handle data submitted via HTML forms.

#### HTTP GET

The GET method is used to retrieve information from the given server using a given URI. The information is encoded and appended to the URL as a query string. Here is an example of how PHP handles GET data:

```php
<?php
echo "Hi " . htmlspecialchars($_GET['name']) . "!";
?>
```

In the above example, `$_GET` is an associative array containing all GET variables that are passed via the URL. `htmlspecialchars` is used to prevent cross-site scripting (XSS) attacks.

### HTTP POST

The POST method transfers information via HTTP headers. The information is encoded as described in case of GET method and put into a header called QUERY\_STRING. Here is how PHP handles POST data:

```php
<?php
echo "Hi " . htmlspecialchars($_POST['name']) . "!";
?>
```

In this example, `$_POST` is an associative array of variables passed to the current script via the HTTP POST method.

### Handling HTML Forms

PHP provides a way to handle HTML form data. You can use the `$_POST` or `$_GET` array to access the data. Here's a simple form processing script:

```php
<?php
$name = $email = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
```

In the above script, `$_SERVER["REQUEST_METHOD"]` is used to retrieve the request method. `test_input` is a custom function that cleans up the input data to prevent injections.

Understanding how to handle HTTP methods and forms is fundamental to creating interactive web applications with PHP.
