Create Login using JWT(JSON Web Token) Token in PHP

 <?php


require "vendor/autoload.php";

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$error = "";

$host = "localhost";
$username = "root";
$password = "";
$database = "test";

if (isset($_POST["login"])) {
    $connect = new PDO("mysql:host=$host; dbname=$database", $username, $password);

    if (empty($_POST["student_name"])) {
        $error = "Please Enter Name Details";
    } else if (empty($_POST["age"])) {
        $error = "Please Enter Age Details";
    } else {
        $query = "SELECT * FROM students WHERE student_name = :student_name";
        $payload = [
            "student_name" => $_POST["student_name"]
        ];
        try {
            $statement = $connect->prepare($query);
            $statement->execute($payload);
            $data = $statement->fetch(PDO::FETCH_ASSOC);
        } catch (Exception $e) {
            $error = $e->getMessage();
            echo $error;
        }

        if ($data) {
            if ($data["age"] == $_POST["age"]) {
                $example_key = "Example_key";
                //$key = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJGaXJzdE9jY3VycmVuY2UiOjEzNDE0MTIwODcsIk5vZGUiOiJsb2NhbGhvc3QiLCJBbGVydEtleSI6IkpVbml0RXZlbnRJbnN0YW5jZSIsIkFnZW50IjoiY3JlYXRlRXZlbnROZXcoKSIsIlN1bW1hcnkiOiJUaGlzIGlzIGEgdGVzdCBldmVudCBnZW5lcmF0ZWQgYnkgdGhlIEpVbml0IFJFU1QgRXZlbnQgVGVzdHMuKDApIiwiTGFzdE9jY3VycmVuY2UiOjEzNDE0MTIwODcsIkFja25vd2xlZGdlZCI6MCwiSWRlbnRpZmllciI6IkpVbml0RXZlbnRUZXN0SW5zdGFuY2UjIyMjMCIsIk1hbmFnZXIiOiJjb20uaWJtLm5ldGNvb2wub21uaWJ1cy53cy5qdW5pdC5yZXN0LnNjaGVtYS51dGlscy5UYWJsZVJvd0V2ZW50IiwiT3duZXJHSUQiOjAsIkxvY2F0aW9uIjoiTk9UIFVQREFURUQiLCJUeXBlIjoxLCJTZXZlcml0eSI6NCwiT3duZXJVSUQiOjAsImlhdCI6MTcyMzEwOTM3NCwibmJmIjoxNzIzMTA5Mzc0LCJleHAiOjE3MjMxMTY1NzR9.Yi0zXEGsH1PBw5WvTXK8h7M9MEvQzUhsUe5UyovTi5o";

                $token = JWT::encode(
                    array(
                        "iat" => time(),
                        "nbf" => time(),
                        "exp" => time() + 3600,
                        "data" => array(
                            "student_name" => $data["student_name"],
                            "age" => $data["age"]
                        )
                    ),
                    $example_key,
                    "HS256"
                );
                setcookie("token", $token, time() + 3600, "/", "", true, true);
                header("Location: http://localhost/JWT_Token_Login/welcome.php");
                exit();
            } else {
                $error = "Wrong Age";
            }
        } else {
            $error = "Wrong Name";
        }
    }
}

?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    <title>How to Create Login using JWT Token in PHP</title>
</head>

<body>
    <div class="container">
        <h1 class="text-center mt-5 mb-5">How to Create Login using JWT Token in PHP</h1>
        <div class="row">
            <div class="col-md-4">&nbsp;</div>
            <div class="col-md-4">
                <?php

                if ($error !== "") {
                    echo "<div class='alert alert-danger'>" . $error . "</div>";
                }

                ?>
                <div class="card">
                    <div class="card-header">Login</div>
                    <div class="card-body">
                        <form method="post">
                            <div class="mb-3">
                                <label>Name</label>
                                <input type="text" name="student_name" class="form-control">
                            </div>
                            <div class="mb-3">
                                <label>Age</label>
                                <input type="text" name="age" class="form-control">
                            </div>
                            <div>
                                <input type="submit" name="login" class="btn btn-primary" value="Login">
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>







WELCOME FILE
<?php

require "vendor/autoload.php";

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$example_key = "Example_key";

if (isset($_COOKIE["token"])) {
    try {
        $decoded = JWT::decode($_COOKIE["token"], new Key($example_key, "HS256"));
    } catch (Exception $e) {
        $error = $e->getMessage();
        echo $error;
    }
}

?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    <title>How to Create Login in PHP using JWT Token</title>
</head>

<body>
    <div class="container">
        <h1 class="text-center">How to Create Login in PHP using JWT Token</h1>
        <div class="row">
            <div class="col-md-4">&nbsp;</div>
            <div class="col-md-4 text-center">
                <h1>Welcome <b><?php echo $decoded->data->student_name; ?></b> </h1>
                <a href="logout.php">Logout</a>
            </div>
        </div>
    </div>
</body>

</html>







LOGOUT FILE
<?php
//logout.php

setcookie("token", "", time() - 3600, "/", "", true, true);

header("location: index.php");











Comments

Popular posts from this blog

Logical_Operators

SubQuery with EXISTS and NOT EXISTS in PHP

Get Functions