P01 Getting Started and Creating The Authentication System
P01 Getting Started and Creating The Authentication System
P01 Getting Started and Creating The Authentication System
1.1 Home
1.2 Create
1.3 Login
1.4 Register
1.5 Contact
2 Setting up the Config File
config.php
<?php
try {
//host
$host = "localhost";
//dbname
$dbname = "cleanblog";
//user
$user = "root";
//pass
$pass = "";
} catch(PDOException $e) {
echo $e->getMessage();
}
?>
2.4 Create cleanblog database
3 Register Page
header.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="description" content="" />
<meta name="author" content="" />
<title>Clean Blog - Start Bootstrap Theme</title>
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.1.0/js/all.js"
crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic"
rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?
family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="../css/styles.css" rel="stylesheet" />
</head>
<body>
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-light" id="mainNav">
<div class="container px-4 px-lg-5">
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-
label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="index.html">Home</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="posts/create.html">Create</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="auth/login.html">login</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="auth/register.html">register</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="contact.html">contact</a></li>
</ul>
</div>
</div>
</nav>
<!-- Page Header-->
<header class="masthead" style="background-image: url('../assets/img/home-bg.jpg')">
<div class="container position-relative px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<div class="site-heading">
<h1>Clean Blog</h1>
<span class="subheading">A Blog Theme by Start Bootstrap</span>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content-->
<div class="container px-4 px-lg-5">
footer.php
</div>
<!-- Footer-->
<footer class="border-top">
<div class="container px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<ul class="list-inline text-center">
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-facebook-f fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li class="list-inline-item">
<a href="#!">
<span class="fa-stack fa-lg">
<i class="fas fa-circle fa-stack-2x"></i>
<i class="fab fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<div class="small text-center text-muted fst-italic">Copyright © Your
Website 2022</div>
</div>
</div>
</div>
</footer>
<!-- Bootstrap core JS-->
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></
script>
<!-- Core theme JS-->
<script src="../js/scripts.js"></script>
</body>
</html>
<?php
if(isset($_POST['submit'])) {
$insert->execute([
':email' => $email,
':username' => $username,
':mypassword' => $password
]);
header("location: login.php");
}
}
?>
<form method="POST" action="register.php">
<!-- Email input -->
<div class="form-outline mb-4">
<input type="email" name="email" id="form2Example1" class="form-control"
placeholder="Email" />
</div>
4 Login Page
<?php
//check for the submit
if(isset($_POST['submit'])) {
if($_POST['email'] == '' OR $_POST['password'] == '') {
echo "one input or more are empty";
}
else {
$email = $_POST['email'];
$password = $_POST['password'];
$login->execute();
$row = $login->FETCH(PDO::FETCH_ASSOC);
echo $login->rowCount();
if($login->rowCount() > 0) {
if(password_verify($password, $row['mypassword'])) {
echo "logged in";
header("location: ../index.html");
}
}
}
}
?>
<?php
//check for the submit
if(isset($_POST['submit'])) {
if($_POST['email'] == '' OR $_POST['password'] == '') {
echo "one input or more are empty";
}
else {
$email = $_POST['email'];
$password = $_POST['password'];
$login->execute();
$row = $login->FETCH(PDO::FETCH_ASSOC);
echo $login->rowCount();
if($login->rowCount() > 0) {
if(password_verify($password, $row['mypassword'])) {
$_SESSION['username'] = $row['username'];
header("location: ../index.php");
}
}
}
}
?>
</div>
</div>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="description" content="" />
<meta name="author" content="" />
<title>Clean Blog - Start Bootstrap Theme</title>
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.1.0/js/all.js"
crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic"
rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?
family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="http://localhost/clean-blog/css/styles.css" rel="stylesheet" />
</head>
<body>
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-light" id="mainNav">
<div class="container px-4 px-lg-5">
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-
label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="index.html">Home</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="posts/create.html">Create</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="auth/login.html">login</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="auth/register.html">register</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4"
href="contact.html">contact</a></li>
</ul>
</div>
</div>
</nav>
<!-- Page Header-->
<header class="masthead" style="background-image:
url('http://localhost/clean-blog/assets/img/home-bg.jpg')">
<div class="container position-relative px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<div class="site-heading">
<h1>Clean Blog</h1>
<span class="subheading">A Blog Theme by Start Bootstrap</span>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content-->
<div class="container px-4 px-lg-5">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="description" content="" />
<meta name="author" content="" />
<title>Clean Blog - Start Bootstrap Theme</title>
<link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
<!-- Font Awesome icons (free version)-->
<script src="https://use.fontawesome.com/releases/v6.1.0/js/all.js"
crossorigin="anonymous"></script>
<!-- Google fonts-->
<link href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic"
rel="stylesheet" type="text/css" />
<link href="https://fonts.googleapis.com/css?
family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet" type="text/css" />
<!-- Core theme CSS (includes Bootstrap)-->
<link href="http://localhost/clean-blog/css/styles.css" rel="stylesheet" />
</head>
<body>
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-light" id="mainNav">
<div class="container px-4 px-lg-5">
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-
label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto py-4 py-lg-0">
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="../clean-
blog/index.php">Home</a></li>
<?php if(isset($_SESSION['username'])) : ?>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="../clean-
blog/posts/create.php">create</a></li>
<li class="nav-item dropdown mt-3">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
<?php echo $_SESSION['username']; ?>
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Profile</a></li>
<li><a class="dropdown-item"
href="../clean-blog/auth/logout.php">logout</a></li>
</ul>
</li>
<?php else : ?>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="../clean-
blog/auth/login.php">login</a></li>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="../clean-
blog/auth/register.php">register</a></li>
<?php endif; ?>
<li class="nav-item"><a class="nav-link px-lg-3 py-3 py-lg-4" href="../clean-
blog/contact.php">Contact</a></li>
</ul>
</div>
</div>
</nav>
<!-- Page Header-->
<header class="masthead" style="background-image:
url('http://localhost/clean-blog/assets/img/home-bg.jpg')">
<div class="container position-relative px-4 px-lg-5">
<div class="row gx-4 gx-lg-5 justify-content-center">
<div class="col-md-10 col-lg-8 col-xl-7">
<div class="site-heading">
<h1>Clean Blog</h1>
<span class="subheading">A Blog Theme by Start Bootstrap</span>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content-->
<div class="container px-4 px-lg-5">
6.1.3 Change file type
<?php
//check for the submit
if(isset($_SESSION['username'])) {
header("location: http://localhost/clean-blog/index.php");
}
if(isset($_POST['submit'])) {
if($_POST['email'] == '' OR $_POST['password'] == '') {
echo "one input or more are empty";
}
else {
$email = $_POST['email'];
$password = $_POST['password'];
$login->execute();
$row = $login->FETCH(PDO::FETCH_ASSOC);
echo $login->rowCount();
if($login->rowCount() > 0) {
if(password_verify($password, $row['mypassword'])) {
$_SESSION['username'] = $row['username'];
header("location: ../index.php");
}
}
}
}
?>
<?php
if(isset($_SESSION['username'])) {
header("location: http://localhost/clean-blog/index.php");
}
if(isset($_POST['submit'])) {
$insert->execute([
':email' => $email,
':username' => $username,
':mypassword' => $password
]);
header("location: login.php");
}
}
?>
<form method="POST" action="register.php">
<!-- Email input -->
<div class="form-outline mb-4">
<input type="email" name="email" id="form2Example1" class="form-control"
placeholder="Email" />
</div>