Sorry, this video is only available to Pro accounts.
Upgrade your account to get access to all content.
Create a PHP Login Script
Created on June 20th, 2015
Most Web apps require some form of user authentication. In this video tutorial we will teach you how to create a php login script from scratch. There are 6 files including the style.css file included in this tutorial. Here is a quick list of those 6 files.
- index.php
- login.php
- logout.php
- register.php
- database.php
- style.css
Below you will find the code of each of these files created in the tutorial:
1. index.php
<?php
session_start();
require 'database.php';
if( isset($_SESSION['user_id']) ){
$records = $conn->prepare('SELECT id,email,password FROM users WHERE id = :id');
$records->bindParam(':id', $_SESSION['user_id']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$user = NULL;
if( count($results) > 0){
$user = $results;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to your Web App</title>
<link rel="stylesheet" type="text/css" href="assets/css/style.css">
<link href='http://fonts.googleapis.com/css?family=Comfortaa' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="header">
<a href="/">Your App Name</a>
</div>
<?php if( !empty($user) ): ?>
<br />Welcome <?= $user['email']; ?>
<br /><br />You are successfully logged in!
<br /><br />
<a href="logout.php">Logout?</a>
<?php else: ?>
<h1>Please Login or Register</h1>
<a href="login.php">Login</a> or
<a href="register.php">Register</a>
<?php endif; ?>
</body>
</html>
2. login.php
<?php
session_start();
if( isset($_SESSION['user_id']) ){
header("Location: /");
}
require 'database.php';
if(!empty($_POST['email']) && !empty($_POST['password'])):
$records = $conn->prepare('SELECT id,email,password FROM users WHERE email = :email');
$records->bindParam(':email', $_POST['email']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message = '';
if(count($results) > 0 && password_verify($_POST['password'], $results['password']) ){
$_SESSION['user_id'] = $results['id'];
header("Location: /");
} else {
$message = 'Sorry, those credentials do not match';
}
endif;
?>
<!DOCTYPE html>
<html>
<head>
<title>Login Below</title>
<link rel="stylesheet" type="text/css" href="assets/css/style.css">
<link href='http://fonts.googleapis.com/css?family=Comfortaa' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="header">
<a href="/">Your App Name</a>
</div>
<?php if(!empty($message)): ?>
<p><?= $message ?></p>
<?php endif; ?>
<h1>Login</h1>
<span>or <a href="register.php">register here</a></span>
<form action="login.php" method="POST">
<input type="text" placeholder="Enter your email" name="email">
<input type="password" placeholder="and password" name="password">
<input type="submit">
</form>
</body>
</html>
3. logout.php
<?php
session_start();
session_unset();
session_destroy();
header("Location: /");
4. register.php
<?php
session_start();
if( isset($_SESSION['user_id']) ){
header("Location: /");
}
require 'database.php';
$message = '';
if(!empty($_POST['email']) && !empty($_POST['password'])):
// Enter the new user in the database
$sql = "INSERT INTO users (email, password) VALUES (:email, :password)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));
if( $stmt->execute() ):
$message = 'Successfully created new user';
else:
$message = 'Sorry there must have been an issue creating your account';
endif;
endif;
?>
<!DOCTYPE html>
<html>
<head>
<title>Register Below</title>
<link rel="stylesheet" type="text/css" href="assets/css/style.css">
<link href='http://fonts.googleapis.com/css?family=Comfortaa' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="header">
<a href="/">Your App Name</a>
</div>
<?php if(!empty($message)): ?>
<p><?= $message ?></p>
<?php endif; ?>
<h1>Register</h1>
<span>or <a href="login.php">login here</a></span>
<form action="register.php" method="POST">
<input type="text" placeholder="Enter your email" name="email">
<input type="password" placeholder="and password" name="password">
<input type="password" placeholder="confirm password" name="confirm_password">
<input type="submit">
</form>
</body>
</html>
5. database.php
<?php
$server = 'localhost';
$username = 'root';
$password = 'root';
$database = 'auth';
try{
$conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
} catch(PDOException $e){
die( "Connection failed: " . $e->getMessage());
}
6. style.css
body{
margin:0px;
padding:0px;
font-family: 'Comfortaa', cursive;
text-align:center;
}
input[type="text"], input[type="password"]{
outline:none;
padding:10px;
display:block;
width:300px;
border-radius: 3px;
border:1px solid #eee;
margin:20px auto;
}
input[type="submit"]{
padding:10px;
color:#fff;
background:#0098cb;
width:320px;
margin:20px auto;
margin-top:0px;
border:0px;
border-radius: 3px;
cursor:pointer;
}
input[type="submit"]:hover{
background:#00b8eb;
}
.header{
border-bottom:1px solid #eee;
padding:10px 0px;
width:100%;
text-align:center;
}
.header a{
color:#333;
text-decoration: none;
}
If you wish to download the code, you can get it from the github repo here: https://github.com/thedevdojo/php-login-script
(in the repo we have included the database.sql file, which contains the users database table)
Hope you enjoyed!
Comments (0)