• Contact
  • About Us
  • Write for Us
  • Subscribe
SpeedySense - Web Technologies, Programming, Linux, and Open-source Blog

Web Technologies, Programming, Linux, Open-source Blog

  • Home
  • Web Technologies
    • HTML/CSS
    • JavaScript
    • jQuery
    • WordPress
    • E-Commerce
    • Shopify
    • Mobile Websites
  • Programming
    • Python
    • PHP
    • Swift
    • Programming
  • Linux
    • Ubuntu
  • Open-Source
    • Odoo
  • SEO
  • Mobile Apps
  • Internet
    • Digital Marketing
    • Database
    • Networking
    • Cloud Computing
    • General

Home » PHP » Create a Registration and Login System with PHP and MySQL

Create a Registration and Login System with PHP and MySQL

by SpeedySense Editorial | Last Updated: December 15, 2019

Create a Registration and Login System with PHP and MySQL

How to create a Registration and Login System with PHP and MySQL. Here is the quick solution to build a login system with PHP and MySQL. Nowadays almost every website provides Registration and login functionality. Thus, it is necessary to add a login system in modern web applications.

In this tutorial, we walk through the complete process of creating a user registration system. Users can create an account by providing username, password, email. After the account was created, the user can log in to their own account. Once the user login, it will redirect to the Dashboard page. Moreover, the user can logout from his panel. This whole system we are developed using PHP and MySQL.

Furthermore, we will show you how to build secure pages that are only accessed by logged in users. Without login, the user can not access the page.

How to create a Registration and Login System with PHP and MySQL

Here are Seven pretty simple steps you have to follow to create a login system.

  1. Create a Database and Database Table
  2. Connect to the Database
  3. Session Create for Logged in User
  4. Create a Registration and Login Form
  5. Make a Dashboard Page
  6. Create a Logout (Destroy session)
  7. CSS File Create

Create a Database and Database Table

First, you have to log in to PHPMyAdmin. Next, click on the Database tab to create a new database. Enter your database name and click on create database button. As soon as PHPMyAdmin will create a new database.

Create new database in MySQL - Registeration and login system

Similarly, you can execute the below query to create a database.

CREATE DATABASE LoginSystem;

Once you create a database, the second step to creating a user table. The user’s table will have the following fields.

  • id – int(11)
  • username  – varchar(100)
  • email  – varchar(100)
  • password  – varchar(100)
  • create_datetime – datetime
CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(50) NOT NULL,
 `email` varchar(50) NOT NULL,
 `password` varchar(50) NOT NULL,
 `create_datetime` datetime NOT NULL,
 PRIMARY KEY (`id`)
);

Copy the above query and execute it in the SQL query area.

Create user table in MySQL database - Registeration and login system

Your database table looks like the below screen.

User table structure

Connect to the Database

After creating the table, we have to create a PHP MySQL connector script to connect to the MySQL database server. Create a file named db.php and put the following code inside it.

db.php
<?php
    // Enter your host name, database username, password, and database name.
    // If you have not set database password on localhost then set empty.
    $con = mysqli_connect("localhost","root","root","LoginSystem");
    // Check connection
    if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
?>

Session Create for Logged in User

Next, we have to create a session for the user. Create a file named auth_session.php and paste the codes below.

auth_session.php
<?php
    session_start();
    if(!isset($_SESSION["username"])) {
        header("Location: login.php");
        exit();
    }
?>

Creating a Registration Form

Furthermore, create PHP file registration.php and paste the following example code in it. This will create an HTML form. It will allow users to register.

registration.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Registration</title>
    <link rel="stylesheet" href="style.css"/>
</head>
<body>
<?php
    require('db.php');
    // When form submitted, insert values into the database.
    if (isset($_REQUEST['username'])) {
        // removes backslashes
        $username = stripslashes($_REQUEST['username']);
        //escapes special characters in a string
        $username = mysqli_real_escape_string($con, $username);
        $email    = stripslashes($_REQUEST['email']);
        $email    = mysqli_real_escape_string($con, $email);
        $password = stripslashes($_REQUEST['password']);
        $password = mysqli_real_escape_string($con, $password);
        $create_datetime = date("Y-m-d H:i:s");
        $query    = "INSERT into `users` (username, password, email, create_datetime)
                     VALUES ('$username', '" . md5($password) . "', '$email', '$create_datetime')";
        $result   = mysqli_query($con, $query);
        if ($result) {
            echo "<div class='form'>
                  <h3>You are registered successfully.</h3><br/>
                  <p class='link'>Click here to <a href='login.php'>Login</a></p>
                  </div>";
        } else {
            echo "<div class='form'>
                  <h3>Required fields are missing.</h3><br/>
                  <p class='link'>Click here to <a href='registration.php'>registration</a> again.</p>
                  </div>";
        }
    } else {
?>
    <form class="form" action="" method="post">
        <h1 class="login-title">Registration</h1>
        <input type="text" class="login-input" name="username" placeholder="Username" required />
        <input type="text" class="login-input" name="email" placeholder="Email Adress">
        <input type="password" class="login-input" name="password" placeholder="Password">
        <input type="submit" name="submit" value="Register" class="login-button">
        <p class="link"><a href="login.php">Click to Login</a></p>
    </form>
<?php
    }
?>
</body>
</html>

The output of the above code will look like this.

Registration form - Registration and Login System

Creating a Login Form

Similarly, create a PHP file login.php and put the following example code in it. This file code contains a form that allows users to enter username and password.

login.php
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Login</title>
    <link rel="stylesheet" href="style.css"/>
</head>
<body>
<?php
    require('db.php');
    session_start();
    // When form submitted, check and create user session.
    if (isset($_POST['username'])) {
        $username = stripslashes($_REQUEST['username']);    // removes backslashes
        $username = mysqli_real_escape_string($con, $username);
        $password = stripslashes($_REQUEST['password']);
        $password = mysqli_real_escape_string($con, $password);
        // Check user is exist in the database
        $query    = "SELECT * FROM `users` WHERE username='$username'
                     AND password='" . md5($password) . "'";
        $result = mysqli_query($con, $query) or die(mysql_error());
        $rows = mysqli_num_rows($result);
        if ($rows == 1) {
            $_SESSION['username'] = $username;
            // Redirect to user dashboard page
            header("Location: dashboard.php");
        } else {
            echo "<div class='form'>
                  <h3>Incorrect Username/password.</h3><br/>
                  <p class='link'>Click here to <a href='login.php'>Login</a> again.</p>
                  </div>";
        }
    } else {
?>
    <form class="form" method="post" name="login">
        <h1 class="login-title">Login</h1>
        <input type="text" class="login-input" name="username" placeholder="Username" autofocus="true"/>
        <input type="password" class="login-input" name="password" placeholder="Password"/>
        <input type="submit" value="Login" name="submit" class="login-button"/>
        <p class="link"><a href="registration.php">New Registration</a></p>
  </form>
<?php
    }
?>
</body>
</html>

Similarly, the output of the above code will look like this.

Login form

Making a Dashboard Page

Once user login we will redirect to the user dashboard page. Create a PHP file named dashboard.php and paste the below code in it.

dashboard.php
<?php
//include auth_session.php file on all user panel pages
include("auth_session.php");
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Dashboard - Client area</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>
    <div class="form">
        <p>Hey, <?php echo $_SESSION['username']; ?>!</p>
        <p>You are now user dashboard page.</p>
        <p><a href="logout.php">Logout</a></p>
    </div>
</body>
</html>

After the user login, you will see the following user dashboard screen.

User dashboard screen - Registration and Login System

Similarly, you can create another secure page. Only you need to add the below code first in your PHP file.

<?php
require('db.php');
include("auth_session.php");
?>

Create a Logout (Destroy session)

When clicking on the logout button we have to destroy user sessions. It will redirect to the login page. Thus, create a file named logout.php and add the below code.

logout.php
<?php
    session_start();
    // Destroy session
    if(session_destroy()) {
        // Redirecting To Home Page
        header("Location: login.php");
    }
?>

CSS File Create

Finally, important step for a user experience perspective. Create CSS file style.css and put the below code.

style.php
body {
    background: #3e4144;
}
.form {
    margin: 50px auto;
    width: 300px;
    padding: 30px 25px;
    background: white;
}
h1.login-title {
    color: #666;
    margin: 0px auto 25px;
    font-size: 25px;
    font-weight: 300;
    text-align: center;
}
.login-input {
    font-size: 15px;
    border: 1px solid #ccc;
    padding: 10px;
    margin-bottom: 25px;
    height: 25px;
    width: calc(100% - 23px);
}
.login-input:focus {
    border-color:#6e8095;
    outline: none;
}
.login-button {
    color: #fff;
    background: #55a1ff;
    border: 0;
    outline: 0;
    width: 100%;
    height: 50px;
    font-size: 16px;
    text-align: center;
    cursor: pointer;
}
.link {
    color: #666;
    font-size: 15px;
    text-align: center;
    margin-bottom: 0px;
}
.link a {
    color: #666;
}
h3 {
    font-weight: normal;
    text-align: center;
}

Finally, our login system is ready to use. You can download the source code from the below download link.

Download Source

Final Thoughts

That all you need to know how to create registration and login system in PHP with MySQL database. Furthermore, we create a registration and login form. Moreover, we create a MySQL connection file to establish a database connection. Thus we create a complete login system with interactive design.

We hope you have found this article helpful. Let us know your questions or feedback if any through the comment section in below. You can subscribe our newsletter and get notified when we publish new WordPress articles for free. Moreover, you can explore here other JavaScript related articles.

Icon made by Kmg Design

Share
Tweet
Share
Pin
4 Shares

If you like our article, please consider buying a coffee for us.
Thanks for your support!

Support us on Buy me a coffee! Buy me a coffee!

Tags Login PHP Registration System
Share
Tweet
Share
Pin
4 Shares

Post navigation

Previous Article JavaScript Keyboard Event | JavaScript Keyboard Key Code
Next Article How to add a Chatter to Form View in Odoo 13, 12

43 Responses Leave a Comment

  1. blank
    Lee King January 5, 2020 at 10:20 PM

    I get an error message “Required fields are missing.”

    Reply
    1. blank
      SpeedySense Editorial January 6, 2020 at 10:23 AM

      Make sure you entered your username, email and password in the registration form.

      Reply
      1. blank
        Lee King January 7, 2020 at 8:42 AM

        I did several times but the program still comes back with that message.

        Reply
        1. blank
          SHIKO June 10, 2020 at 3:36 AM

          hi
          check ur table in database , set unused rows in database ( Null )

          Reply
    2. blank
      ABDIRIZAK ABDIRASHID August 26, 2021 at 8:12 PM

      oh, awesome thank you

      Reply
    3. blank
      chaithra May 26, 2023 at 2:32 PM

      perfectly working. Thank you

      Reply
  2. blank
    Martin Kanchev April 6, 2020 at 9:59 PM

    Thank you sir.

    Reply
  3. blank
    siva rama April 11, 2020 at 12:38 AM

    this is because of php7 version

    Reply
    1. blank
      Bram Lamberts November 30, 2020 at 6:43 AM

      How do I solve this PHP-issue

      Reply
  4. blank
    Mergim April 25, 2020 at 12:31 AM

    Hi,

    i get the following warning.

    But nothing happen after Login?

    Warning: session_start(): Cannot start session when headers already sent in /Library/WebServer/Documents/Login/login.php on line 11

    Warning: Cannot modify header information – headers already sent by (output started at /Library/WebServer/Documents/Login/login.php:1) in /Library/WebServer/Documents/Login/login.php on line 26

    What’s wrong here..cant get the dashboard.php

    Best regards,
    Mergim Alija

    Reply
    1. blank
      Juan Martín Bueno May 25, 2020 at 4:01 AM

      English Solution:
      The problem is in the session_start ()
      It should be first on your login.php page. Try it and you will see that it works!
      ………………………….
      Solución en Español:
      El problema está en el session_start ()
      Debe ser lo primero en tu página login.php. Pruébalo y verás que funciona!

      Reply
  5. blank
    Ikhlas Oyelami May 20, 2020 at 7:07 AM

    Thank you sir, I’m very fortunate to feel you make things work. it really work well for me, I appreciate

    Reply
  6. blank
    Sam May 28, 2020 at 11:09 PM

    Hi
    Thanks for the tutorial on the login and user registration. Very much appreciated, so simple and easy to follow for a newbie like myself who is just starting out really in PHP.

    Reply
  7. blank
    Cath July 25, 2020 at 7:12 AM

    Thank you for the tutorials it really useful for me to create a blog….

    Reply
  8. blank
    Radhe Shyam Salopanthula August 31, 2020 at 1:27 PM

    Thanks a lot for this post. I’ve searched all over the internet for perfect login system finally found yours:)

    Reply
  9. blank
    luigi September 2, 2020 at 9:55 PM

    thanks for your tutorial it was useful for me to understand how it works, but I have a problem with your code, after registering and proceeding with the login on click instead of proceeding to the dashboard.php page redirects me to login.php

    Reply
    1. blank
      SpeedySense Editorial September 5, 2020 at 9:35 AM

      Hi
      Its Strange, We checked after login redirect to dashboard page. So what is wrong you found in our code?

      Reply
  10. blank
    setorqq October 14, 2020 at 1:28 PM

    Your style is very unique compared to other folks I’ve read stuff from.

    Thanks for posting when you have the opportunity, Guess I will just bookmark this
    blog.

    Reply
  11. blank
    manish November 14, 2020 at 4:41 PM

    what about date colomun?
    Required fields are missing. getting error
    Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\registerform\registration.php on line 24

    Reply
  12. blank
    Ela November 19, 2020 at 2:59 PM

    its working fine, also how to route non logged in users to login page if they directly access dashboard page . Thank you guys….

    Reply
  13. blank
    Clint Santiago November 30, 2020 at 1:33 AM

    It works and we’ll explained thanks very much

    Reply
  14. blank
    ahmad December 11, 2020 at 11:31 PM

    hello ! will it work in wordpress ? I have a theme { and it is a woocommerce theme }, but its login system is very poor , so I want to add this login system by replace those code ? Will it work for me or easy to me set these codes? If anyone know please reply

    Reply
  15. blank
    Scout January 2, 2021 at 8:46 AM

    Has your code working perfectly with php5 (thank you!), but now having issues with this solution with shift to php7. Is there anything in the code that needs changing to make it work with php7?

    Reply
  16. blank
    Sunny January 16, 2021 at 9:44 PM

    For new users, it would be nice to have a link to a complete list of prerequisites, otherwise very nice tutorial

    Reply
  17. blank
    Milan January 19, 2021 at 7:36 PM

    Great tutorial! Works like a charm! Thank you 🙂
    I changed the form to take first name and last name in the registration.

    Reply
  18. blank
    samee Ur Rehman January 24, 2021 at 1:33 PM

    i removed the password from “db.php” now it looks like this
    $con = mysqli_connect("localhost", "root", "", "LoginSystem");

    It is running perfectly fine. Thank you so much for the code

    Reply
    1. blank
      Kain March 16, 2021 at 2:14 PM

      This worked for me as well, thank you sir!

      Reply
  19. blank
    Tucute February 18, 2021 at 6:24 PM

    How to make the dashboard display user full details?

    Reply
  20. blank
    sharumi April 9, 2021 at 9:04 AM

    thank you for thisss

    Reply
  21. blank
    Kamesh Tiwari April 14, 2021 at 1:42 PM

    Thank you for this ………..

    Reply
  22. blank
    Mayuri April 22, 2021 at 12:38 PM

    thank you

    Reply
  23. blank
    jency May 13, 2021 at 3:06 PM

    awesome, i tried, its working fine!

    Reply
  24. blank
    Utsa Roy July 27, 2021 at 2:25 PM

    Its working ..greate,..

    Reply
  25. blank
    Roy Casper August 11, 2021 at 6:28 AM

    I’m pretty new at this. How do I call the PHP in to execute the “login/register” system in my website?
    Thank you

    Reply
  26. blank
    Chris Bokungai August 12, 2021 at 5:22 AM

    Hello.
    Thank you for the awesome work.

    Reply
  27. blank
    Tidino October 20, 2021 at 10:34 PM

    Nice Work! I like that 🙂

    Reply
  28. blank
    Jayant Verma March 22, 2022 at 12:58 PM

    Great explanation with respective screenshots like it very much thanks

    Reply
  29. blank
    eva August 5, 2022 at 6:28 PM

    omggg it works thanks a lottt

    Reply
  30. blank
    Bruce Chamoff Podcaster September 18, 2022 at 6:34 PM

    Nice tutorial, works well! One thing I noticed. It says style.php when it should say style.css.

    Reply
  31. blank
    Hussaini umar March 6, 2023 at 3:40 PM

    Perfect 💯% I appreciate it

    Reply
  32. blank
    leo April 3, 2023 at 2:49 AM

    Really useful article! I followed the steps and it really works! Thanks my friend!

    Reply
  33. blank
    JASHUVA April 5, 2023 at 10:15 AM

    Perfect thankyou

    Reply
  34. blank
    Feba Anna John July 4, 2023 at 3:21 PM

    Thanks lot Perfect Working

    Reply

Join the Discussion. Cancel

Search

Latest Posts

  • Our Top 4 Essential WordPress Appointment Reservation Plugins

    Our Top 4 Essential WordPress Appointment Reservation Plugins [2024]

    March 14, 2024
  • Marketing for Building & Design Firms: 5 Best Strategies

    Marketing for Building & Design Firms: 5 Best Strategies

    August 23, 2023
  • 7 Actionable Tips to Boost E-commerce Store Conversions

    7 Actionable Tips to Boost E-commerce Store Conversions

    July 29, 2023
  • How to Choose the Right White Label WordPress Development Service for Your Business

    How to Choose the Right White Label WordPress Development Service for Your Business

    June 17, 2023

Categories

Subscribe

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

SpeedySense - Web Technologies, Programming, Linux, and Open-source Blog
  • Terms of Use
  • Privacy Policy
  • Advertise
Copyright © 2024 SpeedySense. All rights reserved.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. However you may visit Cookie Settings to provide a controlled consent.
Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non Necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.

Save & Accept