Pentingnya informasi yang kita dapatkan , bisa mempengaruhi seberapa cepat kita mengatasi permasalahan yang ada. Oleh karena itu website ini bertujuan untuk membantu mereka yang membutuhkan solusi dari masalah yang mereka hadapi.

Breaking

Membuat Login Menggunakan HTML

            Welcome back nawak-nawak sekalian, pada article kali ini saya akan memberikan info mengenai pembuatan login menggunakan html. Tentunya dong kalian sudah mengikuti langkah pembuatan menu? Jika belum silahkan anda lihat terlebih dahulu di Membuat menu menggunakan html karena saya akan menggabungkannya dan menampilkannya menjadi satu di Contoh program sederhana html.

             Karena article tentang login jadi saat ini kita fokus saja ke login yuk nawak-nawak. Untuk langkah pertama silahkan aktifkan xampp dan buka terlebih dahulu c++ kalian, disini saya menggunakan Notepad++ agar lebih mudah. Berikutnya kita membuat database terlebih dahulu dengan nama mybestproject dengan nama table tblogin.



          Selanjutnya kita membuat db.php dimana db.php ini bertujuan untuk menghubungkan antara php dan juga database. Silahkan ikuti seperti dibawah ini.

db.php

<?php
    // Konfigurasi database anda
    $host = "localhost";
    $dbname = "mybestproject";
    $username = "root";
    $password = "";

    try {
        // Buat Object PDO baru dan simpan ke variable $db
        $db = new PDO("mysql:host={$host};dbname={$dbname}", $username, $password);
        // Mengatur Error Mode di PDO untuk segera menampilkan exception ketika ada kesalahan
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $exception){
        die("Connection error: " . $exception->getMessage());
    }

?>

           Next kita membuat login, register, dan juga logout. Silahkan perhatikan dan ikuti kembali seperti dibawah ini.

login.php



<?php  
    // Lampirkan db dan User
    require_once "db.php";
    require_once "User.php";

    //Buat object user
    $user = new User($db);

    //Jika sudah login
    if($user->isLoggedIn()){
        header("location: index.php"); //redirect ke index
    }

    //jika ada data yg dikirim
    if(isset($_POST['kirim'])){
        $email = $_POST['email'];
        $password = $_POST['password'];

        // Proses login user
        if($user->login($email, $password)){
            header("location: index.php");
        }else{
            // Jika login gagal, ambil pesan error
            $error = $user->getLastError();
        }
    }
 ?>

<!DOCTYPE html>  
<html>  
    <head>
        <meta charset="utf-8">
        <title>Login</title>
        <link rel="stylesheet" href="style.css" media="screen" title="no title" charset="utf-8">
    </head>
    <body>
        <div class="login-page">
          <div class="form">
            <form class="login-form" method="post">
              <?php if (isset($error)): ?>
                  <div class="error">
                      <?php echo $error ?>
                  </div>
              <?php endif; ?>
              <input type="email" name="email" placeholder="email" required/>
              <input type="password" name="password" placeholder="password" required/>
              <button type="submit" name="kirim">login</button>
              <p class="message">Not registered? <a href="register.php">Create an account</a></p>
            </form>
          </div>
        </div>
    </body>
</html> 

register.php



<?php  
    // Lampirkan db dan User
    require_once "db.php";
    require_once "User.php";

    // Buat object user
    $user = new User($db);

    // Jika sudah login
    if($user->isLoggedIn()){
        header("location: index.php"); //Redirect ke index
    }

    //Jika ada data dikirim
    if(isset($_POST['kirim'])){
        $nama = $_POST['nama'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        // Registrasi user baru
        if($user->register($nama, $email, $password)){
            // Jika berhasil set variable success ke true
            $success = true;
        }else{
            // Jika gagal, ambil pesan error
            $error = $user->getLastError();
        }
    }
 ?>

<!DOCTYPE html>  
<html>  
    <head>
        <meta charset="utf-8">
        <title>Register</title>
        <link rel="stylesheet" href="style.css" media="screen" title="no title" charset="utf-8">
    </head>
    <body>
        <div class="login-page">
          <div class="form">
              <form class="register-form" method="post">
              <?php if (isset($error)): ?>
                  <div class="error">
                      <?php echo $error ?>
                  </div>
              <?php endif; ?>
              <?php if (isset($success)): ?>
                  <div class="success">
                      Berhasil mendaftar. Silakan <a href="login.php">masuk</a>
                  </div>
              <?php endif; ?>

               <input type="text" name="nama" placeholder="nama" required/>
               <input type="email" name="email" placeholder="email address" required/>
               <input type="password" name="password" placeholder="password" required/>
               <button type="submit" name="kirim">create</button>
               <p class="message">Already registered? <a href="login.php">Sign In</a></p>
             </form>
          </div>
        </div>
    </body>
</html> 

logout.php

<?php  
    // Lampirkan db dan User
    require_once "db.php";
    require_once "User.php";

    // Buat object user
    $user = new User($db);

    // Logout! hapus session user
    $user->logout();

    // Redirect ke login
    header('location: login.php');
 ?>

              Pastikan jangan asal copas dan sesekali coba anda perhatikan codingan ini. Jika anda perhatikan disitu terdapat require_once yang berfungsi untuk memanggil method sesuai yang dibutuhkan halaman tersebut dalam menampilkannya. Upayahkan untuk memperhatikan lagi besar kecilnya huruf karena jika anda salah mengetik saja maka project kalian tidak akan berjalan dengan baik. Selanjutnya kita membuat index.php sebagai tampilan utama saat kita berhasil masuk kedalam project yang kita buat.

index.php



<?php  
    // Lampirkan db dan User
    require_once "db.php";
    require_once "User.php";

    // Buat object user
    $user = new User($db);

    // Jika belum login
    if(!$user->isLoggedIn()){
        header("location: login.php"); //Redirect ke halaman login
    }

    // Ambil data user saat ini
    $currentUser = $user->getUser();

 ?>

<!DOCTYPE html>  
<html>  
    <head>
        <meta charset="utf-8">
        <title>Home</title>
        <link rel="stylesheet" href="style.css" media="screen" title="no title" charset="utf-8">
    </head>
    <body>
        <div class="container">
            <div class="info">
                <h1>Selamat datang <?php echo $currentUser['nama'] ?></h1>
            </div>
            <a href="logout.php"><button type="button">Logout</button></a>

        </div>
    </body>
</html>

           Disitu terdapat <div class="info"> yang berfungsi sebagai tampilan nama yang melakukan login ke dalam project tersebut. Dan terakhir kita membuat user.php sebagai method dari index.php dimana user ini yang akan berproses dalam pemanggilan sapa saja yang ingin register ataupun yang ingin login.

user.php

<?php  
    /**
     * Class User untuk melakukan login dan registrasi user baru
     */
    class User
    {

        private $db; //Menyimpan Koneksi database
        private $error; //Menyimpan Error Message

        // Contructor untuk class User, membutuhkan satu parameter yaitu koneksi ke databse
        function __construct($db_conn)
        {
            $this->db = $db_conn;

            // Mulai session
            session_start();
        }

        // Registrasi user baru
        public function register($nama, $email, $password)
        {
            try
            {
                // buat hash dari password yang dimasukkan
                $hashPasswd = password_hash($password, PASSWORD_DEFAULT);

                //Masukkan user baru ke database
                $query = $this->db->prepare("INSERT INTO tblogin(nama, email, password) VALUES(:nama, :email, :pass)");
                $query->bindParam(":nama", $nama);
                $query->bindParam(":email", $email);
                $query->bindParam(":pass", $hashPasswd);
                $query->execute();

                return true;
            }catch(PDOException $e){
                // Jika terjadi error
                if($e->errorInfo[0] == 23000){
                    //errorInfor[0] berisi informasi error tentang query sql yg baru dijalankan
                    //23000 adalah kode error ketika ada data yg sama pada kolom yg di set unique
                    $this->error = "Email sudah digunakan!";
                    return false;
                }else{
                    echo $e->getMessage();
                    return false;
                }
            }
        }

        //Login user
        public function login($email, $password)
        {
            try
            {
                // Ambil data dari database
                $query = $this->db->prepare("SELECT * FROM tblogin WHERE email = :email");
                $query->bindParam(":email", $email);
                $query->execute();
                $data = $query->fetch();

                // Jika jumlah baris > 0
                if($query->rowCount() > 0){
                    // jika password yang dimasukkan sesuai dengan yg ada di database
                    if(password_verify($password, $data['password'])){
                        $_SESSION['user_session'] = $data['id'];
                        return true;
                    }else{
                        $this->error = "Email atau Password Salah";
                        return false;
                    }
                }else{
                    $this->error = "Email atau Password Salah";
                    return false;
                }
            } catch (PDOException $e) {
                echo $e->getMessage();
                return false;
            }
        }

        // Cek apakah user sudah login
        public function isLoggedIn(){
            // Apakah user_session sudah ada di session
            if(isset($_SESSION['user_session']))
            {
                return true;
            }
        }

        // Ambil data user yang sudah login
        public function getUser(){
            // Cek apakah sudah login
            if(!$this->isLoggedIn()){
                return false;
            }

            try {
                // Ambil data user dari database
                $query = $this->db->prepare("SELECT * FROM tblogin WHERE id = :id");
                $query->bindParam(":id", $_SESSION['user_session']);
                $query->execute();
                return $query->fetch();
            } catch (PDOException $e) {
                echo $e->getMessage();
                return false;
            }
        }

        // Logout user
        public function logout(){
            // Hapus session
            session_destroy();
            // Hapus user_session
            unset($_SESSION['user_session']);
            return true;
        }

        // Ambil error terakhir yg disimpan di variable error
        public function getLastError(){
            return $this->error;
        }
    }

?>

          Jika sudah silahkan anda menuju ke browser dan juga ketikkan localhost/myproject/ lalu enter dan lihat apakah program tersebut berjalan dengan baik apa tidak. Jika berhasil maka kalian akan dialihkan langsung ke Login tersebut.

          Sekian dulu dari saya dalam pembuatan fitur login dengan menggunakan html dan php, jika kalian terdapat eror dan mungkin setress mengenai project kalian yang tidak berjalan dengan bagus, silahkan anda download di https://github.com/kalebmolewe/membuat-login-register-menggunakan-html .

          Selamat mencoba nawak-nawak sekalian ☺❤☺❤☝✌

No comments:

Post a Comment