How Do You Create a Complete Form in PHP?

Complete form in PHP is an essential skill for anyone diving into web development. Whether you’re looking to handle user input efficiently or validate data securely, mastering this topic can solve issues like form submission errors and security vulnerabilities. Ready to transform your skills? Keep reading to discover effective solutions!

What Is a Form in PHP?

A web form is an interactive section on a webpage that allows users to enter information and submit it to a server for processing. Forms are widely used to collect user data such as names, email addresses, passwords, feedback, and more.

In web development, forms are usually created using HTML, while PHP is used on the server side to process and manage the submitted data.
For example, when a user fills out a contact form and clicks the submit button, the form data is sent to a server where PHP can validate, process, or store it in a database.

How HTML Forms Interact with PHP

HTML forms act as the front-end interface where users enter information, while PHP works as the back-end processor.

The interaction works like this:

  1. A user enters data into an HTML form.
  2. The user clicks the Submit button.
  3. The browser sends the form data to a PHP file specified in the action attribute.
  4. PHP receives the data using $_POST or $_GET.
  5. The PHP script processes the data (display it, validate it, or store it in a database).

This process allows websites to collect and process user input dynamically.

Common Use Cases of PHP Forms

PHP forms are used in many real-world web applications. Some of the most common examples include:

Contact Forms

  • Allow users to send messages or inquiries to website owners.

Login Forms

  • Used for user authentication by verifying usernames and passwords.

Registration Forms

  • Used to create new user accounts on websites.

Other common examples include:

  • Feedback forms
  • Survey forms
  • Newsletter subscription forms
  • Payment forms

Basic Structure of an HTML Form

Before processing form data in PHP, you must first create the form using HTML.

An HTML form contains several important elements that collect user input.

<form> Tag

The <form> tag defines the form container and specifies how the data will be sent.

Example:

<form action="process.php" method="POST">
  • action → Specifies the PHP file that will process the form data.
  • method → Defines how the data will be sent (GET or POST).

Input Fields

Input fields allow users to enter data into the form.

Example:

<input type="text" name="name">
<input type="email" name="email">

Common input types include:

  • text
  • email
  • password
  • number
  • radio
  • checkbox

Labels

Labels provide descriptions for form fields so users know what information to enter.

Example:

<label>Name:</label>
<input type="text" name="name">

Labels improve accessibility and usability.

Submit Button

The submit button allows users to send their form data to the server.

Example:

<input type="submit" value="Submit">

When the user clicks this button, the browser sends the form data to the PHP script.

Example HTML Form Code

Here is a simple example of a form:

<form action="process.php" method="POST">

<label>Name:</label>
<input type="text" name="name">

<br><br>

<label>Email:</label>
<input type="email" name="email">

<br><br>

<input type="submit" value="Submit">

</form>

This form collects a user’s name and email and sends it to a PHP file called process.php.

How PHP Handles Form Data

Once a form is submitted, PHP can retrieve the data and process it on the server.

PHP provides special variables called superglobals to access form input.

$_POST

The $_POST superglobal is used when form data is sent using the POST method.

Example:

$name = $_POST['name'];
$email = $_POST['email'];

echo "Name: " . $name;
echo "Email: " . $email;

POST is commonly used for:

  • login forms
  • registration forms
  • contact forms

because it keeps data hidden from the URL.

$_GET

The $_GET superglobal is used when form data is sent using the GET method.

Example:

$name = $_GET['name'];

In GET requests:

  • Data appears in the URL
  • It is easier to bookmark or share

Example URL:

example.com/process.php?name=John

Form Action Attribute

The action attribute defines where the form data will be sent.

Example:

<form action="process.php" method="POST">

This means the form will send its data to process.php, where PHP will handle it.

If no action is specified, the form submits to the same page.

Example PHP Script

Below is a simple PHP script that processes form data:

<?php

$name = $_POST['name'];
$email = $_POST['email'];

echo "Welcome " . $name . "<br>";
echo "Your email is " . $email;

?>

This script retrieves the submitted values and displays them on the page.

Creating a Complete Form in PHP (Step-by-Step)

Let’s build a complete PHP form from scratch.

Step 1: Create the HTML Form

Example form with multiple fields:

<form action="form.php" method="POST">

<label>Name:</label>
<input type="text" name="name">

<br><br>

<label>Email:</label>
<input type="email" name="email">

<br><br>

<label>Message:</label>
<textarea name="message"></textarea>

<br><br>

<input type="submit" name="submit" value="Send">

</form>

This form collects:

  • Name
  • Email
  • Message

Step 2: Process Form Data Using PHP

Now create a PHP script to process the form.

<?php

if(isset($_POST['submit'])){

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

echo "Name: " . $name . "<br>";
echo "Email: " . $email . "<br>";
echo "Message: " . $message;

}

?>

This script:

  • Checks if the form was submitted
  • Retrieves form values
  • Displays them on the page

Step 3: Validate Form Inputs

Validation ensures that users enter correct and safe information.

Required Fields

You can check if a field is empty using empty().

Example:

if(empty($name)){
echo "Name is required";
}

Email Validation

PHP provides the filter_var() function for email validation.

Example:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "Invalid email format";
}

Sanitizing Inputs

Sanitizing prevents security issues such as XSS attacks.

Example:

$name = htmlspecialchars($_POST['name']);

Useful Validation Functions

FunctionPurpose
isset()Checks if a variable exists
empty()Checks if a field is empty
filter_var()Validates and sanitizes data

Using these functions helps create secure and reliable forms.


Using POST vs GET in PHP Forms

Both POST and GET methods are used to send form data to the server.

Here is a comparison:

FeaturePOSTGET
Data visibilityHiddenVisible in URL
SecurityMore secureLess secure
Data lengthNo major limitLimited
Use caseFormsSearch queries

Most developers prefer POST for form submissions because it is safer and does not expose data in the URL.

Storing Form Data in a Database

In real-world applications, form data is usually stored in a database.

The most commonly used database with PHP is MySQL.

Connecting PHP to a Database

Example connection using MySQLi:

<?php

$conn = mysqli_connect("localhost","root","","test_db");

if(!$conn){
die("Connection failed: " . mysqli_connect_error());
}

?>

Inserting Form Data into Database

Example:

$sql = "INSERT INTO contacts (name, email, message)
VALUES ('$name', '$email', '$message')";

mysqli_query($conn, $sql);

This code stores the form data inside a contacts table.

Example Using PDO

PDO is a more secure database method.

Example:

$pdo = new PDO("mysql:host=localhost;dbname=test_db","root","");

$stmt = $pdo->prepare("INSERT INTO contacts(name,email,message) VALUES(?,?,?)");

$stmt->execute([$name,$email,$message]);

PDO supports prepared statements, which help prevent SQL injection attacks.

Complete Example: PHP Contact Form

To understand how everything works together, let’s create a complete working PHP contact form. This example includes:

  • HTML form
  • PHP form processing
  • Input validation
  • Success message

Step 1: HTML Contact Form

Create a file called contact.php and add the following code:

<!DOCTYPE html>
<html>
<head>
<title>PHP Contact Form</title>
</head>
<body>

<h2>Contact Form</h2>

<form method="POST" action="contact.php">

<label>Name:</label><br>
<input type="text" name="name"><br><br>

<label>Email:</label><br>
<input type="text" name="email"><br><br>

<label>Message:</label><br>
<textarea name="message"></textarea><br><br>

<input type="submit" name="submit" value="Send Message">

</form>

</body>
</html>

This form collects three fields:

  • Name
  • Email
  • Message

The form sends the data to the same PHP file for processing.

Step 2: PHP Form Processing Script

Add the following PHP code below the HTML form in the same file.

<?php

if(isset($_POST['submit'])){

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

echo "<h3>Submitted Information</h3>";
echo "Name: " . $name . "<br>";
echo "Email: " . $email . "<br>";
echo "Message: " . $message;

}

?>

This script:

  1. Checks if the form was submitted
  2. Retrieves form values using $_POST
  3. Displays the submitted information

Step 3: Form Validation

Validation ensures that the user provides proper input.

Example validation code:

<?php

if(isset($_POST['submit'])){

$name = trim($_POST['name']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);

if(empty($name) || empty($email) || empty($message)){
echo "All fields are required.";
}

elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "Invalid email format.";
}

else{

$name = htmlspecialchars($name);
$email = htmlspecialchars($email);
$message = htmlspecialchars($message);

echo "Form submitted successfully!";

}

}

?>

This validation checks:

  • Required fields
  • Email format
  • Safe input handling

Example Success Message

When the form is submitted correctly, users will see:

Form submitted successfully!

You can also display a styled success message or redirect the user to a thank-you page.

Common Mistakes Beginners Make

When creating forms in PHP, beginners often make several common mistakes that can lead to security risks or functionality issues.

Not Validating User Input

One of the biggest mistakes is accepting user input without validation.

If inputs are not validated:

  • Incorrect data may be stored
  • Security vulnerabilities may occur

Always validate fields such as:

  • Email
  • Password
  • Required text inputs

Using GET for Sensitive Data

The GET method displays form data in the URL.

Example:

example.com/login.php?username=john&password=123

This can expose sensitive data like:

  • passwords
  • personal information

For secure forms, always use the POST method.

Not Sanitizing Inputs

User inputs can sometimes contain malicious code.

Example of a dangerous input:

<script>alert('Hacked')</script>

Without sanitization, this can cause Cross-Site Scripting (XSS) attacks.

Use functions like:

  • htmlspecialchars()
  • filter_var()

to clean the input data.

Missing Form Action Attribute

Another common mistake is forgetting to define the action attribute in the form.

Example mistake:

<form method="POST">

Correct version:

<form method="POST" action="process.php">

Without the correct action, the form may not send data to the intended PHP script.

Best Practices for PHP Forms

Following best practices ensures your PHP forms are secure, reliable, and professional.

Always Validate Inputs

Both client-side and server-side validation should be implemented.

Examples:

  • Required fields
  • Email validation
  • Input length validation

Server-side validation is especially important because client-side validation can be bypassed.

Use Prepared Statements

When inserting form data into a database, always use prepared statements.

Prepared statements help prevent SQL injection attacks.

Example using PDO:

$stmt = $pdo->prepare("INSERT INTO contacts(name,email,message) VALUES(?,?,?)");
$stmt->execute([$name,$email,$message]);

Protect Against XSS and SQL Injection

Security should always be a priority when handling user input.

Protect your application by:

  • Sanitizing input using htmlspecialchars()
  • Validating email using filter_var()
  • Using prepared database queries

These techniques reduce the risk of common web vulnerabilities.

Use Server-Side Validation

Client-side validation (JavaScript) improves user experience, but it is not fully secure.

Attackers can bypass it.

Server-side validation using PHP ensures that all data is verified before processing or storing it in the database.

Practical Uses of PHP Forms in Everyday Projects

  1. User Registration at Facebook
    Facebook, a giant in the social media landscape, uses complete forms in PHP to manage user registration. This ensures that user data is efficiently captured and stored in their database, helping facilitate millions of users managing their accounts.
    
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = htmlspecialchars($_POST['name']);
        $email = htmlspecialchars($_POST['email']);
        // Database connection & query here
        echo "Welcome, " . $name;
    }
    ?>
    
    Output: After submitting a registration form, users see a personalised welcome message like “Welcome, Jane Doe.”
  2. Contact Form at Amazon
    Amazon leverages PHP forms to handle customer queries through their contact page. This seamless interaction allows for immediate customer feedback and assistance.
    
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $subject = htmlspecialchars($_POST['subject']);
        $message = htmlspecialchars($_POST['message']);
        // Email processing here
        echo "Your message regarding " . $subject . " has been sent.";
    }
    ?>
    
    Output: Users receive a confirmation like “Your message regarding [Subject] has been sent.”
  3. Booking System at Airbnb
    At Airbnb, PHP forms play a key role in the booking process, allowing users to input their travel details and book accommodations smoothly.
    
    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $destination = htmlspecialchars($_POST['destination']);
        $dates = htmlspecialchars($_POST['dates']);
        // Booking flow here
        echo "Your trip to " . $destination . " has been booked!";
    }
    ?>
    
    Output: Users see a confirmation like “Your trip to London has been booked!”

PHP Form Queries

Building a form in PHP can feel like a big task at first. But don’t worry, with a bit of explanation, it’s actually quite exciting! To help you along your coding journey, here’s a handy list of frequently asked questions about creating forms with PHP. These queries aren’t just from any site—they’re unique and aren’t covered by competitors like GeeksforGeeks or Baeldung.

  1. What are the best practices for PHP form validation?
    It’s crucial to validate data to ensure it’s clean and safe. Always start with server-side validation using PHP to check if fields are empty or contain unwanted characters to prevent SQL injection and XSS attacks. Here’s a simple example:
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = clean_input($_POST["name"]);
    }

    function clean_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
    }

  2. How do I keep form data when a submission error occurs?
    You can ‘remember’ the data by repopulating the form fields with the submitted values. This can be achieved by using the value attribute in your HTML, like so:
              
  3. Can PHP handle file uploads in forms, and how?
    Yes, PHP can handle file uploads! Make sure your form uses enctype="multipart/form-data", and handle the upload in PHP using $_FILES. Here’s a snippet:
        if ($_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
    $uploadDir = 'uploads/';
    $uploadFilePath = $uploadDir . basename($_FILES['uploaded_file']['name']);
    move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $uploadFilePath);
    }
  4. What is the recommended way to process form data using AJAX with PHP?
    Using AJAX allows form submissions without refreshing the page. You can employ JavaScript’s Fetch API to send data to a PHP script, which processes the information asynchronously. Here’s a simplified example:
       fetch('process_form.php', {
    method: 'POST',
    body: new FormData(document.querySelector('form'))
    })
    .then(response => response.text())
    .then(data => console.log(data));
  5. How can I set up PHP to only process forms using HTTPS?
    To ensure security, check whether the request is secure before processing. Here’s a quick way to verify:
        if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
    // Process form
    } else {
    echo "Secure connection required.";
    }
  6. Why is it important to use tokens for CSRF protection in PHP forms?
    Tokens help protect against Cross-Site Request Forgery (CSRF). Implement them by generating a token when the form loads, storing it in a session, and validating it upon form submission. Simple token implementation:
        session_start();
    $token = bin2hex(random_bytes(32));
    $_SESSION['csrf_token'] = $token;
  7. What’s a common mistake when sending emails from a PHP form?
    One common mistake is not sanitising email inputs, opening the door to email header injection attacks. Always validate and filter email data:
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    mail($email_to, $subject, $message, $headers);
    }
  8. How does PHP handle multi-step forms?
    PHP handles multi-step forms by using sessions to store data as the user navigates through each step. Here’s a quick guide:
        session_start();
    $_SESSION['step1'] = $_POST['step1_data'];
    // Redirect to step 2
  9. Can PHP forms be integrated with database systems easily?
    Absolutely! PHP seamlessly connects to databases like MySQL using PDO (PHP Data Objects):
        $pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    $stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
    $stmt->execute(['name' => $name, 'email' => $email]);
  10. What’s the best way to make a PHP form user-friendly?
    Improving user experience involves using clear labels, placeholder texts, and error messages. Consider client-side validation with JavaScript for better interactivity.

Hopefully, this smorgasbord of questions and answers about PHP forms gives you a clearer path to building your own fully-functional and secure forms! Remember, practice makes perfect, so get coding and have fun along the way!

Our AI-powered php online compiler offers a seamless coding experience. Instantly write, run, and test your ‘php’ code with the help of AI. It’s designed to streamline your coding process, making it quicker and more efficient. Try it out, and see the difference AI can make!

Conclusion

Learning to ‘Complete form in php’ not only enhances your understanding of server-side scripting but also empowers you to create interactive web applications. Get your hands dirty and experience the benefits firsthand! Explore Newtum for more on Java, Python, C, C++, and other programming languages.

Edited and Compiled by

This article was compiled and edited by @rasikadeshpande, who has over 4 years of experience in writing. She’s passionate about helping beginners understand technical topics in a more interactive way.

About The Author