Login Multi user PHP mysqli native full sourcode

Login Multi User


Multi User adalah kemampuan aplikasi kita membedakan dan memetakan user berdasarkan levelnya. Nantinya ketika login user akan diarahkan ke masing-masing halamannya sesuai dengan yang telah kita tentukan. Di sisi lain hak akses user akan dibatasi misalnya user A tidak boleh masuk kehalaman yang bisa diakses oleh user B, begitu juga sebaliknya misalnya. Semuanya dapat kita tentukan berdasarkan aturan (rules) yang akan kita buat.

Sehingga Login multi user dapat diartikan Login Dengan user yang berbeda-beda dengan hak akses yang dibatasi sesuai user yang loginnya.

Perhatikan gambar dibawah ini. ini adalah ilustrasi login user dengan tugasnya yang berbeda-beda.

Login Multi User Php mysqli Native
Login Multi User Skema

Login multi user telah banyak digunakan saat ini, implementasinya pun banyak Pada Sistem informasi contoh:

  • Misalnya pada sistem informasi akademik, terdapat beberapa user; mahasiswa, dosen, pegawai administrasi dan lainnya. 
  • Contoh yang lain apliakasi E-commerce terdapat user pembeli, penjulan dan administrator.

Skema sistem Login Multi User

 Pada kesempatan kali ini kita akan belajar membuat login multi user dengan PHP dan mysqli menggunakan studi kasus penjualan. Untuk gambaran sistem login yang akan kita buat adalah seperti pada gambar Skema diatas.

User pengguna aplikasi dari gambar diatas dibagi menjadi 3 yaitu:

  1. User admin ketika login maka dia akan diarahkan pada halaman admin. 
  2. Sementara user penjual ketika login juga akan diarahkan kehalaman penjual 
  3. Begitu juga dengan pembeli akan diarahkan kehalaman pembeli.
Beberapa aturan lain yang akan kita buat adalah masing-masing user hanya dapat mengakses halamannya saja tanpa bisa mengakses halaman yang lain.

Tutorial Membuat Login Multi User

Pada tutorial kali ini kita akan membuat beberapa file yang akan membentuk komponen aplikasi sederhana untuk login multi user. Beberapa file tersebut sebagai berikut:
  1. File koneksi database
  2. Halaman Index untuk login
  3. Halaman Administrator untuk user admin
  4. Halaman Penjual untuk user penjual
  5. Halaman Pembeli untuk user pembeli
  6. Halaman Logout untuk keluar
Kita akan buat aplikasi sederhana yang berfokus pada login multi user. Nantinya kalian bisa kembangkan atau gunakan sesuai kasus projek yang kalian buat. Intinya pahami konsep dan logikanya saja, dan tidak perlu terpaku hanya pada coding. Karena seorang programmer yang paling penting adalah logika dan algoritmanya.

Create Database Penjualan Beserta Tabelnya

Pada pembuatan database penjualan kali ini kita akan menjalankan perintahnya di CMD atau Terminal.

Pertama-tama kita membuat database dengan nama penjualan.

     
    create database penjualan;

Gunakan database penjualan. 

     
    use penjualan;

Buat Tabel Dengan nama Users

     
    create table users(     id_user int not null auto_increment primary key,     username varchar(30) not null,     nama varchar(50),     email varchar(30),     level int,     password varchar(200)     );

Insert 3 data user untuk masing-masing level. disini saya menggunakan level dengan biangan bulat 1 untuk admin, 2 untuk penjual dan 3 untuk pembeli.

     
    INSERT INTO users (username,nama,email,level,password)     VALUES ('dimas95','Setiawan Dimas','dimas95@gmail.com',1,md5(12345)),     ('roland09','Roland Pugel','roland09@gmail.com',2,md5(12345)),     ('candra34','Candra Sidauruk','candra34@gmail.com',3,md5(12345));


Hasilnya akan terlihat seperti dibawah ini.

Tabel login multi user PHP mysqli native

Perhatikan pada field password saya menggunakan enskripsi md5 sehingga tampilan password yang muncul menjadi kode acak. Hal ini digunakan untuk alasan keamanan.


Integrasi Bootstrap ke dalam Aplikasi.


Koneksi.Php

File koneksi.php digunakan untuk membuat koneksi kedatabase penjualan. untuk membuatnya kita membuat file baru kemudian berinama koneksi.php, kemudian isikan code dibawah ini

     
    <?php
        $host="localhost";
        $user="root";
        $password="";
        $db="penjualan";

        $kon = mysqli_connect($host,$user,$password,$db);
        if (!$kon){
        die("Koneksi gagal:".mysqli_connect_error());
        }
    ?>


Index.php

membuat sebuah file dengan nama index.php. file ini index.php nantinya akan menjadi file utama ketika projek penjualan kita dipanggil melalui localhost

     
    <!DOCTYPE html>
    <html>
    <head>
        <!-- Load file CSS Bootstrap -->
        <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    </head>
    <body>

        <div class="container">
        <h2>Login multi user dengan PHP</h2><br>
        <?php
            //Fungsi untuk mencegah inputan karakter yang tidak sesuai
            function input($data) {
                $data = trim($data);
                $data = stripslashes($data);
                $data = htmlspecialchars($data);
                return $data;
            }
            //Cek apakah ada kiriman form dari method post
            if ($_SERVER["REQUEST_METHOD"] == "POST") {

                session_start();
                include "koneksi.php";
                $username = input($_POST["username"]);
                $p = input(md5($_POST["password"]));

                $sql = "select * from users where username='".$username."' and password='".$p."' limit 1";
                $hasil = mysqli_query ($kon,$sql);
                $jumlah = mysqli_num_rows($hasil);

                if ($jumlah>0) {
                    $row = mysqli_fetch_assoc($hasil);
                    $_SESSION["id_user"]=$row["id_user"];
                    $_SESSION["username"]=$row["username"];
                    $_SESSION["nama"]=$row["nama"];
                    $_SESSION["email"]=$row["email"];
                    $_SESSION["level"]=$row["level"];
           
           
                    if ($_SESSION["level"]=$row["level"]==1)
                    {
                        header("Location:admin.php");
                    } else if ($_SESSION["level"]=$row["level"]==2)
                    {
                        header("Location:penjual.php");
                    }else if ($_SESSION["level"]=$row["level"]==3){
                        header("Location:pembeli.php");
                    }
           
                   
                }else {
                    echo "<div class='alert alert-danger'>
                    <strong>Error!</strong> Username dan password salah.
                </div>";
                }

            }
       
        ?>
       
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
            <div class="form-group">
                <label>Username:</label>
                <input type="text" class="form-control" name="username" placeholder="Masukan Username">
            </div>
            <div class="form-group">
                <label>Password:</label>
                <input type="password" class="form-control" name="password" placeholder="Masukan Password">
            </div>
            <div class="form-group">
                <input type="submit"  class="btn btn-primary"  value="Login">
            </div>
            </form>
        </div>
    </body>
    </html>


Keterangan:

htmlspecialchars digunakan untuk keamanan inputan supaya user tidak menginputkan script ke aplikasi kita.

Form akan dikirim ke file index.php dengan perintah action form ke $_SERVER[“PHP_SELF”]; dengan method post.

Jika ada nilai yang dikirim dari form maka akan dicek if ($_SERVER[“REQUEST_METHOD”] == “POST”) jika kondisi bernilai true maka akan dieksekusi perintah dalam blok if tersebut.


Untuk logika sistem login multi user sebenarnya ada pada percabangan PHP dibawah. Coba perhatikan pada sintax bagian ini

     
    if ($_SESSION["level"]=$row["level"]==1){
            header("Location:admin.php");
    } else if ($_SESSION["level"]=$row["level"]==2){
        header("Location:penjual.php");
    }else if ($_SESSION["level"]=$row["level"]==3){
        header("Location:pembeli.php");
    }

Terdapat percabangan if dimana mengecek level dari user yang login tersebut. Apabila levenya 1 maka halaman akan diarahkan ke admin.php. Jika levelnya 2 maka diarahkan ke halaman penjual.php dan apabila levelnya 3 maka diarahkan ke halaman pembeli.php


Admin.php


     
              

        <?php
        session_start();

        if (!isset($_SESSION["username"])) {
            echo "Anda harus login dulu <br><a href='login.php'>Klik disini</a>";
            exit;
        }

        $level=$_SESSION["level"];

        if ($level!=1) {
            echo "Anda tidak punya akses pada halaman admin";
            exit;
        }

        $id_user=$_SESSION["id_user"];
        $username=$_SESSION["username"];
        $nama=$_SESSION["nama"];
        $email=$_SESSION["email"];

        ?>
        <!DOCTYPE html>
        <html>
        <head>
        <!-- Load file CSS Bootstrap offline -->
        <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">

        </head>
        <body>
            <div class="jumbotron text-center">
            <h1>Selamat Datang di Halaman Administrator</h1>
            <h4>Halaman ini hanya dapat diakses oleh user admin</h4>
                <p>Nama : <?php echo $nama; ?></p>
                <p>Username : <?php echo $username; ?></p>
                <p>Email : <?php echo $email; ?></p>
                <a href="logout.php" class="btn btn-warning" role="button">Logout</a>
            </div>

        </body>
        </html>

Bila kita perhatikan pada sintak diatas terdapat bagian untuk mengecek apakah user tersebut sudah login atau belum

     
    if (!isset($_SESSION["username"])) { echo "Anda harus login dulu <br><a href='login.php'>Klik disini</a>"; exit;     }

Kondisi diatas mengecek variabel session untuk nilai username apakah ada nilainya atau tidak, jika tidak ada (artinya belum login) maka sistem akan menampilkan “anda harus login dulu”

Selanjutnya coba perhatikan pada sintak

     
    $level=$_SESSION["level"];     if ($level!=1) {     echo "Anda tidak punya akses pada halaman admin";     exit;     }

pada sintak bagian ini berfungsi untuk mengecek apakah user yang mengakses halaman admin.php adalah level 1 (level admin) jika user tersebut bukan level 1 maka sistem akan menampilkan pemberitahuan pembatasan hak akses. Karena halaman admin khusus hanya user admin dengan level 1 saja yang boleh mengaksesnya.


Penjual.php

     
     <?php
    session_start();

    if (!isset($_SESSION["username"])) {
        echo "Anda harus login dulu <br><a href='login.php'>Klik disini</a>";
        exit;
    }

    $level=$_SESSION["level"];

    if ($level!=2) {
        echo "Anda tidak punya akses pada halaman penjual";
        exit;
    }

    $id_user=$_SESSION["id_user"];
    $username=$_SESSION["username"];
    $nama=$_SESSION["nama"];
    $email=$_SESSION["email"];

    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <!-- Load file CSS Bootstrap offline -->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">

    </head>
    <body>
    <div class="jumbotron text-center">
        <h1>Selamat Datang di Halaman Penjual</h1>
        <h4>Halaman ini hanya dapat diakses oleh User admin dan penjual</h4>
        <p>Nama : <?php echo $nama; ?></p>
        <p>Username : <?php echo $username; ?></p>
        <p>Email : <?php echo $email; ?></p>
        <a href="logout.php" class="btn btn-warning" role="button">Logout</a>
    </div>

    </body>
    </html>

Sama dengan halaman admin.php pada halaman penjual.php hanya user dengan level 2 yang boleh mengaksesnya

     
    if ($level!=2) { echo "Anda tidak punya akses pada halaman penjual"; exit;     }

Disini kita membuat kondisi level yang bisa mengakses halaman penjual adalah user dengan level 2 (penjual) selain daripada itu tidak dapat mengakses halaman ini.


Pembeli.php

     
     <?php
    session_start();

    if (!isset($_SESSION["username"])) {
        echo "Anda harus login dulu <br><a href='login.php'>Klik disini</a>";
        exit;
    }

    $level=$_SESSION["level"];

    if ($level!=3) {
        echo "Anda tidak punya akses pada halaman pembeli";
        exit;
    }

    $id_user=$_SESSION["id_user"];
    $username=$_SESSION["username"];
    $nama=$_SESSION["nama"];
    $email=$_SESSION["email"];


    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <!-- Load file CSS Bootstrap offline -->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">

    </head>
    <body>
    <div class="jumbotron text-center">
        <h1>Selamat Datang di Halaman Pembeli</h1>
        <h4>Halaman ini hanya dapat diakses oleh user admin dan pembeli</h4>
        <p>Nama : <?php echo $nama; ?></p>
        <p>Username : <?php echo $username; ?></p>
        <p>Email : <?php echo $email; ?></p>

        <a href="logout.php" class="btn btn-warning" role="button">Logout</a>
    </div>

    </body>
    </html>

Sama halnya dengan halaman admin maupun penjual. dihalaman pembeli pengguna harus login terlebih dahulu untuk mengakses halaman ini.

Pada halaman pembei hanya boleh diakses oleh pengguna dengan level 3 (pembeli) selain dari pada itu tidak dapat mengaksesnya.

Logout.php

Terakhir kita membuat halaman logout dengan nama logout.php. Halaman ini berfungsi untuk mengosongkan/membersihkan variabel session ketika pengguna melakukan login.

     
        <?php
        session_start();

        $_SESSION['id_user']='';
        $_SESSION['username']='';
        $_SESSION['nama']='';
        $_SESSION['email']='';
        $_SESSION['level']='';

        unset($_SESSION['id_user']);
        unset($_SESSION['username']);
        unset($_SESSION['nama']);
        unset($_SESSION['email']);
        unset($_SESSION['level']);

        session_unset();
        session_destroy();
        header('Location:index.php');

        ?>


Hasil Program


user dimas95 adalah user admin dengan level 1 maka ketika login user tersebut diarahkan ke halaman admin


Ketika user admin ingin mengakses halaman pembeli maka sistem akan memblokir


Mohon diperhatikan bahwa pada artikel ini hanya memberikan contoh terkait penggunaan login multi user. Terkait rule atau aturan didalamnya kalian bisa menyesuaikan dengan aturan yang kalian buat.

Bisa saja kalian bisa membuat aturan user admin boleh mengakses halaman penjual maupun pembeli. Atau user penjual dapat mengakses halaman pembeli sementara user pembeli tidak dapat mengakses halaman penjual. Semuanya bisa kalian buat berdasarkan aturan yang ingin kalian terapkan pada aplikasi yang dibuat.


Posting Komentar

1 Komentar

  1. Dengan belajar disini projek ujikom saya selesai. alhamdulillah bisa bikin login dengan banyak pengguna yang berbeda. terimakasih banyak

    BalasHapus