PHP $_POST

In PHP, the $_POST superglobal is used to collect form data submitted via the HTTP POST method. Unlike $_GET, data sent using $_POST is not visible in the URL, making it more secure for handling sensitive information like passwords.

🔹 How Does $_POST Work?

When a user submits a form using method="post", PHP can access the values using $_POST.

📝 Example 1: Simple Form Using $_POST

This example collects a username and password from an HTML form.

<form action="welcome.php" method="post">
    Username: <input type="text" name="username"> <br>
    Password: <input type="password" name="password"> <br>
    <input type="submit" value="Login">
</form>

When the form is submitted, data is sent to welcome.php:

<?php
if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    echo "Welcome, $username!";
} else {
    echo "Please enter your details.";
}
?>

Try It Now


🔹 Handling Missing or Empty $_POST Values

Always check if the form fields are set to avoid errors.

<?php
$username = isset($_POST['username']) ? $_POST['username'] : "Guest";
echo "Hello, $username!";
?>

Try It Now

Output: If no username is provided, it defaults to “Guest”.


🔹 $_POST vs. $_GET – Key Differences

  • $_POST – Data is not visible in the URL (secure for passwords, personal details).
  • $_GET – Data is visible in the URL (useful for search queries, navigation).

🔹 Securing User Input in $_POST

To prevent XSS (Cross-Site Scripting), always sanitize user input:

<?php
$username = isset($_POST['username']) ? htmlspecialchars($_POST['username']) : "Guest";
echo "Welcome, $username!";
?>

Try It Now

Using htmlspecialchars() converts special characters to HTML entities, preventing script injections.


🎯 Key Takeaways

  • $_POST collects form data sent via HTTP POST.
  • More secure than $_GET because data is not exposed in the URL.
  • Always use input validation to protect against security threats.

📝 Practice Time!

Modify the form to collect favorite color and email, then display them using $_POST!