Lompat ke konten Lompat ke sidebar Lompat ke footer

Cara Menambahkan Otentikasi ke Semua Aplikasi PHP Menggunakan MySQL

 Jelajahi kekuatan PHP dan MySQL dengan tutorial ini yang memandu kamu melalui pembuatan autentikasi di aplikasi web kamu.


PHP adalah bahasa skrip sisi server sumber terbuka yang dapat disematkan ke dalam HTML untuk membangun aplikasi web. Ini digunakan untuk mengembangkan aplikasi web dinamis dan menghubungkan aplikasi ke database.


Dalam panduan ini, kamu akan belajar bagaimana membangun sistem otentikasi menggunakan database PHP dan MySQL. Kami berharap kamu mengetahui dasar-dasar PHP dan MySQL sebelum memulai.


Membangun Tata Letak Menggunakan HTML dan Bulma CSS

Bagian depan proyek ini dibangun menggunakan HTML dan Bulma CSS . Bulma CSS adalah salah satu framework CSS populer yang digunakan untuk mendesain halaman web. kamu dapat menggunakan Bulma CSS dengan mengimpor CSS yang diperkecil dari CDN ke file PHP kamu.


<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">


Mengintegrasikan Database MySQL

MySQL adalah sistem manajemen database SQL relasional yang digunakan untuk melakukan operasi CRUD pada data. Aplikasi web ini akan menggunakan phpMyAdmin untuk mengelola database.


phpMyAdmin adalah perangkat lunak gratis yang ditulis dalam PHP, dimaksudkan untuk menangani administrasi MySQL melalui web.


kamu dapat menginstal phpMyAdmin dengan menyiapkan server WAMP di mesin Windows kamu (atau XAMPP di Linux ) dan kunjungi URL berikut


http://localhost/phpmyadmin

Layar akan terlihat seperti ini:


Membuat Basis Data

kamu dapat membuat database baik dengan menggunakan kueri SQL atau melalui GUI yang disediakan oleh phpMyAdmin . Pada aplikasi ini nama databasenya adalah auth, dan nama tabelnya juga user. Atribut tabel adalah id, username, email, dan password.


Berikut cara membuat database dan tabel menggunakan perintah SQL:


CREATE DATABASE auth;

CREATE TABLE users(

   id int,

   username varchar(255),

   email varchar(255),

   password varchar(500),

);


Menghubungkan Aplikasi ke Database

Buat file bernama db.php di folder proyek kamu, di mana kamu akan menghubungkan database kamu dan mengimpor file ini ke file PHP lain untuk menggunakannya.


Koneksi dibuat menggunakan metode mysqli_connect() . Metode ini menerima empat argumen: nama server, pengguna, kata sandi, dan nama database.


kamu dapat menggunakan variabel $connection saat menjalankan kueri dengan mengimpor file db.php ke file PHP lainnya.


<?php

   $connection = mysqli_connect("localhost", "root", "", "auth") ;

?>


Daftar Menggunakan PHP

Tahap pertama membangun sistem otentikasi melibatkan pendaftaran atau pendaftaran. Tata letak frontend halaman pendaftaran memiliki formulir dengan tindakan yang membuat permintaan POST pada halaman. Ini memiliki empat bidang input: nama pengguna, email, kata sandi, dan konfirmasi kata sandi.


 <form class="card m-3 p-6 m-5 container mx-auto" action="./register.php" method="POST">

   

       <h1 class="title is-1 has-text-center">Register Here</h1>

       <input class="input is-primary mt-4" type="text" name="username"  placeholder="Username">

       <?php if ($usernameErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$usernameErrorMsg</p>" ?>

       

       <input class="input is-primary mt-4" type="email" name="email"  placeholder="Email">

       <?php if ($emailErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$emailErrorMsg</p>" ?>

       

       <input class="input is-primary mt-4" type="password" name="password" placeholder="Password">

       <?php if ($passwordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$passwordErrorMsg</p>" ?>

       

       <input class="input is-primary mt-4" type="password" name="confirm-password" placeholder="Confirm Password">

       <?php if ($confirmPasswordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$confirmPasswordErrorMsg</p>" ?>

       

       <button type="submit" name="submit" class="button is-primary mt-4">Register</button>

       <p class="mt-2 text-center">Already have an account ? <a href="./login.php">Login</a></p> 

</form>


Metode isset() memeriksa apakah tombol diklik atau tidak, karena metode ini dapat mengakses tombol Daftar menggunakan superglobal $_POST[] .


Sebelum semua ini, kamu perlu mengimpor file db.php ke dalam file register.php . Ada beberapa variabel yang dideklarasikan untuk validasi input. Lihat kode di bawah ini.


include "./db.php";

$error = "";

$emailErrorMsg = "";

$usernameErrorMsg = "";

$passwordErrorMsg = "";

$confirmPasswordErrorMsg = "";


Validasi Input pada Halaman Daftar

Sebelum melanjutkan dengan validasi input, kamu perlu mendapatkan akses ke nilai elemen input menggunakan $_POST[] .


Metode mysqli_real_escape_string() membantu menghapus karakter khusus dari string karena dapat menyebabkan tindakan berbahaya saat melakukan operasi kueri.


$username = mysqli_real_escape_string($connection, $_POST["username"]);

$email = mysqli_real_escape_string($connection, $_POST["email"]);

$password = mysqli_real_escape_string($connection, $_POST["password"]);

$confirmPassword = mysqli_real_escape_string($connection, $_POST["confirm-password"]);

    if($username == ""){

       $usernameErrorMsg = "Please enter your username";

         }

         if($email == ""){

             $emailErrorMsg = "Please enter the email"; 

         }else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){

            $emailErrorMsg = "Please enter a valid email";  

         }

         if($password == ""){

             $passwordErrorMsg = "Enter your password";

         }

         if($confirmPassword == ""){

             $confirmPasswordErrorMsg = "Enter confirm password";

         }

          if(strlen($password) < 6){

             $passwordErrorMsg = "Enter a password greater than 6 characters";

         }else if($password!=$confirmPassword){

             $confirmPasswordErrorMsg = "Password and Confirm Password field should be same";

         }

 

Pertama-tama, kamu memeriksa apakah bidangnya kosong atau tidak. Untuk kolom input email, kamu perlu memeriksa apakah pengguna telah memasukkan email yang valid atau tidak menggunakan metode filter_var() . Panjang bidang kata sandi harus lebih besar dari 6. Ini adalah validasi dasar yang perlu kamu jaga saat membangun aplikasi apa pun.


Jika tidak ada kesalahan, kamu dapat melanjutkan dengan melakukan perintah query pada file register.php .


if($error == "" && $emailErrorMsg == "" && $passwordErrorMsg == "" && $confirmPasswordErrorMsg == ""){

          $query = "SELECT * FROM auth WHERE email = '$email'";

                  $findUser = mysqli_query($connection, $query);

                  $resultantUser = mysqli_fetch_assoc($findUser);

      

                  if($resultantUser){

                      $error = "User already exists";

                  }

                  $password = md5($password);

                  $query = "INSERT INTO auth (username, email, password) VALUES('$username', '$email', '$password')";

                  $insertUser = mysqli_query($connection, $query);

      

                  $_SESSION['username'] = $username;

                  $_SESSION['email'] = $email;

                  header("location: home.php");

}

kamu harus menjalankan kueri yang memeriksa apakah email sudah ada di database atau tidak. Metode mysqli_query() digunakan untuk melakukan semua operasi kueri. kamu harus meneruskan hasil kueri dalam metode mysqli_query_assoc() . Metode ini mengubah hasilnya menjadi array string asosiatif.


Jika pengguna sudah ada, kamu perlu menampilkan kesalahan dengan pesan: Pengguna sudah ada. Jika tidak, kamu perlu memasukkan bidang dalam database. Karena menyimpan string kata sandi dalam teks biasa bukanlah praktik yang baik, metode md5() akan mengubah kata sandi menjadi hash, lalu menyimpannya.


Setelah pengguna disimpan dalam database, kamu perlu memuat nama pengguna atau email di superglobal $_SESSION[] dan mengarahkan pengguna ke halaman berkamu.


Tampilan Layar Utama

Pengguna dapat mengakses halaman berkamu hanya jika mereka masuk. Di halaman berkamu, kamu perlu memeriksa apakah SESSION ada atau tidak. Jika tidak ada SESSION yang disetel, kamu perlu mengarahkan pengguna ke halaman login.


Masuk Menggunakan PHP

Dalam aplikasi ini, pengguna akan login menggunakan email dan password. Tata letak HTML untuk login.php :


<form class="card m-3 p-6 m-5 container  mx-auto" action="./login.php" method="POST">

       <h1 class="title is-1 has-text-center has-text-black">Login Here</h1>

       <?php if ($error != "") echo " <div class='button is-danger is-light'>$error</div>" ?>

       <input class="input is-primary mt-4"  name="email" type="email" placeholder="Email">

       <?php if ($emailErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$emailErrorMsg</p>" ?>

       

       <input class="input is-primary mt-4"  name="password" type="password" placeholder="Password">

       <?php if ($passwordErrorMsg != "") echo "<p class='is-size-6 is-danger is-light has-text-danger'>$passwordErrorMsg</p>" ?>

       <button class="button is-primary mt-4" type="submit" name="submit">Login</button>

       <p>Don't have an account? <a href="./register.php">Register here</a></p>

   </form>


Mengautentikasi Pengguna

kamu perlu memvalidasi input yang serupa dengan yang dilakukan saat mendaftarkan pengguna.


$email = mysqli_real_escape_string($connection, $_POST["email"]);

      $password = mysqli_real_escape_string($connection, $_POST["password"]);

       if($email == ""){

           $emailErrorMsg = "Please enter the email"; 

       }else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){

           $emailErrorMsg = "Please enter a valid email";  

       }

       if($password == ""){

           $passwordErrorMsg = "Enter your password";

}

Setelah tidak ada kesalahan validasi, nilai bidang input akan dijalankan dalam kueri SQL. Untuk mendapatkan nilai hash kata sandi, teruskan kata sandi dalam metode md5() .


if($emailErrorMsg == "" && $passwordErrorMsg == ""){

   $password = md5($password);

   $query = "SELECT * FROM users WHERE email = '$email' AND password='$password'";

   $find_user = mysqli_query($connection, $query);

   if(mysqli_num_rows($find_user) == 1){

       $_SESSION["email"] = $email;

       while($row = mysqli_fetch_assoc($find_user)){

           $_SESSION["username"] = $row["username"];

       }

           

       header("location:home.php");

   }else{

       $error = "Invalid credentials";

   }

}


   Setelah mengambil kata sandi hash, berikan email dan kata sandi hash dalam kueri SQL dan jalankan menggunakan metode mysqli_query() .


Saat mendapatkan hasilnya, kamu harus meneruskannya dalam metode mysqli_num_rows() . Jika metode mysqli_num_rows() mengembalikan nilai 1, maka kamu dapat mengautentikasi pengguna.


Simpan email dan nama pengguna di $_SESSION[] dan arahkan pengguna ke halaman berkamu.


Keluar dari Pengguna

Otentikasi pengguna dilakukan menggunakan superglobal $_SESSION[] . Untuk logout pengguna, kamu perlu menghancurkan SESSION dan mengarahkan pengguna ke login.php .


  session_start();

   $_SESSION = array();

   session_destroy();

   header("Location: login.php");

   exit;


Sistem Otentikasi yang Aman Itu Penting

kamu telah belajar menambahkan sistem otentikasi menggunakan PHP dan MySQL. kamu dapat membawa proyek ini ke tingkat berikutnya dengan menambahkan fungsionalitas yang lebih maju ke dalamnya atau mengintegrasikan sistem ini dalam proyek skala besar seperti aplikasi media sosial, halaman blog, atau proyek besar lainnya. Terus belajar dan membangun hal-hal baru sebanyak yang kamu bisa.


Ingin mempelajari lebih lanjut tentang PHP? Ada banyak manipulasi yang dapat kamu lakukan dengan pengetahuan PHP yang tepat.

Posting Komentar untuk "Cara Menambahkan Otentikasi ke Semua Aplikasi PHP Menggunakan MySQL"