Please enable JavaScript!
Bitte aktiviere JavaScript!
S'il vous plaît activer JavaScript!
Por favor,activa el JavaScript!
antiblock.org

 |  | 
Anda ingin membuat website?
Untuk Anda yang sedang mencari orang untuk jasa pembuatan website, Saya akan bantu buatkan aplikasi sesuai kebutuhan Anda. Segera hubungi : mail@rizaldimaulidia.com. Selengkapnya tentang profil saya klik www.rizaldimaulidia.com.

PHP

Cara Mudah Membuat Login Multi Level User dengan PHP dan MySQL

img-responsive

Catatan ini sebenarnya pengembangan dari catatan sebelumnya mengenai Cara Mudah Membuat Form Login dengan Session PHP. Dalam catatan tersebut, saya sudah membahas bagaiamana membuat sistem login dan logout. Yang membedakan dengan catatan kali ini adalah pada catatan ini kita akan membuat sistem login dengan hak akses/level user yang berbeda-beda. Catatan ini akan sangat berguna bagi Anda yang sedang membuat website dengan hak akses pengguna yang berbeda-beda.

Dalam catatan ini, saya akan membagi level user menjadi 2 (Admin dan Operator), berikut detailnya :

Admin
Level user admin hak aksesnya adalah berikut ini :

  1. Akses Menu Home. Aksi yang bisa di lakukan : Read
  2. Akses Menu Berita. Aksi yang bisa di lakukan : Create, Read, Update, Delete
  3. Akses Menu Pengguna. Aksi yang bisa di lakukan : Create, Read, Update, Delete
  4. Akses Menu Kontak. Aksi yang bisa di lakukan : Read

Operator
Level user operator hak aksesnya adalah berikut ini :

  1. Akses Menu Home. Aksi yang bisa di lakukan : Read
  2. Akses Menu Berita. Aksi yang bisa di lakukan : Read, Update, Delete
  3. Akses Menu Kontak. Aksi yang bisa di lakukan : Read

Akun User
Saya telah menyiapkan 2 data user untuk tutorial ini, diantaranya :

  1. User Admin
    Username : rizaldi
    Password : 12345678
  2. User Operator
    Username : siska
    Password : siska123

DEMO
Sebelum masuk ke tutorialnya. Mungkin ada yang mau lihat demonya terlebih dahulu. Silahkan klik link berikut untuk melihat demonya : Lihat Demo.


STEP 1 – PERSIAPAN
Pada tahap ini kita akan menyiapkan hal-hal yang diperlukan.

  1. Download jQuery, klik link berikut : Download.
  2. Download Bootstrap, klik link berikut : Download.
  3. Buat sebuah folder baru dengan nama login_role_php, lalu simpan pada folder xampp/htdocs/.
  4. Buat sebuah folder dengan nama css, lalu simpan pada folder xampp/htdocs/login_role_php/.
  5. Buat sebuah folder dengan nama js, lalu simpan pada folder xampp/htdocs/login_role_php/.
  6. Buat sebuah folder dengan nama layouts, lalu simpan pada folder xampp/htdocs/login_role_php/.
  7. Buat sebuah folder dengan nama system, lalu simpan pada folder xampp/htdocs/login_role_php/.
  8. Buat sebuah folder dengan nama views, lalu simpan pada folder xampp/htdocs/login_role_php/.
  9. Esktrak file bootstrap.7z yang telah didownload tadi.
  10. Copy and paste folder fonts dari folder bootstrap yang telah diekstrak tadi ke folder xampp/htdocs/login_role_php/.
  11. Copy and paste file bootstrap.min.css dari folder bootstrap/css/ yang telah diekstrak tadi ke folder xampp/htdocs/login_role_php/css/.
  12. Copy and paste file bootstrap.min.js dari folder bootstrap/js/ yang telah diekstrak tadi ke folder xampp/htdocs/login_role_php/js/.
  13. Copy and paste file jquery.min.js yang telah di download tadi ke folder xampp/htdocs/login_role_php/js/.

CATATAN
Disini kita pakai bootstrap hanya sebagai tambahan saja agar saya lebih mudah mendesainnya haha 😀


STEP 2 – DATABASE
Pada step ini, kita akan membuat databasenya. ikuti langkah-langkah berikut ini :

  1. Buat sebuah database dengan nama mynotescode.
  2. Buat sebuah tabel dengan nama user. Struktur tabelnya sebagai berikut :
    Struktur Tabel - Cara Membuat CRUD Tanpa Refresh dengan Codeigniter dan Bootstrap

    CREATE TABLE `user` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `username` varchar(20) NOT NULL,
     `password` varchar(50) NOT NULL,
     `nama` varchar(200) NOT NULL,
     `role` enum('admin','operator') NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
  3. Insert 2 data user :
    INSERT INTO `user` (`id`, `username`, `password`, `nama`, `role`) VALUES
    (1, 'rizaldi', md5('12345678'), 'Rizaldi Maulidia Achmad', 'admin'),
    (2, 'siska', md5('siska123'), 'Siska Melina Rachman', 'operator');

STEP 3 – KONEKSI DATABASE
Pada step ini, kita akan membuat file koneksi.php yang berfungsi untuk menghubungkan dengan database MySQL. Silahkan buat file koneksi.php, lalu simpan di folder xampp/htdocs/login_role_php/system/. Berikut ini kodenya :

<?php
$host = 'localhost'; // Nama hostnya
$username = 'root'; // Username
$password = ''; // Password (Isi jika menggunakan password)
$database = 'mynotescode'; // Nama databasenya
$base_url = 'http://localhost/login_role_php/'; // Set Base Url Web

// Koneksi ke MySQL dengan PDO
$pdo = new PDO('mysql:host='.$host.';dbname='.$database, $username, $password);
?>

STEP 4 – INDEX
Tahap awal kita akan membuat sebuah file index.php, file ini berfungsi sebagai file utama untuk mengkontrol template mana yang seharusnya dipakai, Jadi dalam catatan ini template login dan template backend (setelah login) saya bedakan. Silahkan buat file index.php, lalu simpan pada folder xampp/htdocs/login_role_php/. Berikut kodenya :

<?php
session_start(); // Start session nya

// Kita cek apakah user sudah login atau belum
// Cek nya dengan cara cek apakah terdapat session username atau tidak
if(isset($_SESSION['username'])){ // Jika session username ada berarti dia sudah login
  include "layouts/backend.php"; // Kita panggil template backend
}else{ // Jika user belum login
  include "layouts/login.php"; // Kita panggil template login
}
?>

Mungkin penjelasan pada setiap kode diatas sudah cukup jelas, jadi saya tidak perlu menjelaskan lagi.

session_start();
Skrip ini berfungsi untuk memulai/menjalankan session. karena disini kita akan membuat login menggunakan session.


STEP 5 – CONFIGURATION
Pada tahap ini kita akan membuat sebuah file yang isinya sebagai pengatur halaman mana yang akan di tampilkan. Untuk lebih jelasnya soal ini Anda bisa membaca tutorial saya tentang Cara Membuat 1 File Template untuk Semua Tampilan dengan PHP. Setelah anda membaca tutorial tadi, harusnya Anda sudah paham maksud dari file config yang akan kita buat sekarang. Silahkan buat file dengan nama config.php, lalu simpan padafolder xampp/htdocs/login_role_php/. Berikut kodenya :

<?php
$page = (isset($_GET['page']))? $_GET['page'] : '';

if(isset($_SESSION['username'])){ // Jika sudah login
  if($_SESSION['role'] == 'admin'){ // Jika user yang login adalah admin
    // Berikut halaman yang bisa di akses :
    switch($page){
      case 'login': // $page == login (jika isi dari $page adalah home)
      include "views/login.php"; // load file login.php yang ada di folder views
      break;

      case 'home': // $page == home (jika isi dari $page adalah home)
      include "views/home.php"; // load file home.php yang ada di folder views
      break;

      case 'berita': // $page == berita (jika isi dari $page adalah berita)
      include "views/berita.php"; // load file berita.php yang ada di folder views
      break;

      case 'pengguna': // $page == pengguna (jika isi dari $page adalah pengguna)
      include "views/pengguna.php"; // load file pengguna.php yang ada di folder views
      break;

      case 'kontak': // $page == kontak (jika isi dari $page adalah kontak)
      include "views/kontak.php"; // load file kontak.php yang ada di folder views
      break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      default: // Ini untuk set default jika isi dari $page tidak ada
      // Set halaman 404 Not Found
      header("HTTP/1.0 404 Not Found");
      echo "<h1>404 Not Found</h1>";
      echo "The page that you have requested could not be found.";
      exit();
    }
  }else{ // Jika user yang login adalah operator
    // Berikut halaman yang bisa di akses :
    switch($page){
      case 'login': // $page == login (jika isi dari $page adalah home)
      include "views/login.php"; // load file login.php yang ada di folder views
      break;

      case 'home': // $page == home (jika isi dari $page adalah home)
      include "views/home.php"; // load file home.php yang ada di folder views
      break;

      case 'berita': // $page == berita (jika isi dari $page adalah berita)
      include "views/berita.php"; // load file berita.php yang ada di folder views
      break;

      case 'kontak': // $page == kontak (jika isi dari $page adalah kontak)
      include "views/kontak.php"; // load file kontak.php yang ada di folder views
      break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      // case 'case_selanjutnya':
      // include "views/case_selanjutnya.php";
      // break;

      default: // Ini untuk set default jika isi dari $page tidak ada
      // Set halaman 404 Not Found
      header("HTTP/1.0 404 Not Found");
      echo "<h1>404 Not Found</h1>";
      echo "The page that you have requested could not be found.";
      exit();
    }
  }
}else // Jika belum login
  include "views/login.php"; // Set default halamannya adalah "login"
?>

$page = (isset($_GET[‘page’]))? $_GET[‘page’] : ”;
Pada kode ini terdapat fungsi isset(). Fungsi ini digunakan untuk mengecek apakah elemen yang kita cari ada atau tidak. Dalam kode tersebut, kita melakukan pengecekan terhadap $_GET[‘page’]. jadi disini kita cek apakah ada data yang dikirim dengan method get (di url) dengan nama parameternya “page”. Nah jika ada, maka kita ambil value dari data page  tersebut dan kita set ke variabel $page. Jika tidak ada, maka kita set variabel $page dengan kosong. Masih bingung soal $_GET[‘page’] itu dari mana? silahkan baca tutorial saya tentang Cara Membuat 1 File Template untuk Semua Tampilan dengan PHP.

$_SESSION[‘username‘]
Salah satu cara untuk mengambil value dari sebuah session adalah dengan struktur berikut $_SESSION[‘nama_session‘]nama_session tersebut diisi sesuai dengan nama session yang kita buat saat mendeklarasikan/men-set sessionnya. Dalam tutorial ini saya set sessionnya dengan nama “username“. Kita akan set sessionnya pada proses login nanti pada step selanjutnya.

Dalam kasus ini, kita akan membagi 2 kondisi switch dimana masing-masing kondisi adalah list halaman yang bisa di akses untuk role / level user tersebut. Dalam kasus ini untuk user dengan level / role “admin”, dia bisa mengakses login, home, berita, pengguna dan kontak. Untuk user dengan level / role “operator”, dia hanya bisa mengakses login, home berita, dan kontak.


STEP 6 – TEMPLATE LOGIN
Selanjutnya kita akan membuat template untuk halaman login. Silahkan buat file dengan nama login.php, lalu simpan pada folder xampp/htdocs/login_role_php/layouts/. Berikut kodenya :

<?php
include "system/koneksi.php";
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login + Hak Akses (PHP)</title>

    <!-- Load File CSS Bootstrap  -->
    <link href="<?php echo $base_url.'css/bootstrap.min.css'; ?>" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <style>
    body {
        padding-top: 40px;
        padding-bottom: 40px;
        background-color: #eee;
    }

    .form-signin {
        max-width: 330px;
        padding: 15px;
        margin: 0 auto;
    }
    .form-signin .form-signin-heading{
        margin-bottom: 10px;
    }
    .form-signin .form-control {
        position: relative;
        height: auto;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        padding: 10px;
        font-size: 16px;
    }
    .form-signin .form-control:focus {
        z-index: 2;
    }
    </style>
</head>
<body>
    <div class="container">
        <div class="form-signin">
            <h2 class="form-signin-heading">Silahkan login</h2>
            <?php include "config.php"; // Load file config.php ?>
        </div>
    </div>
</body>
</html>

Pada kode ini kita akan memanggil 2 file php yang sudah kita buat sebelumnya yakni koneksi.php dan config.php. Khusus untuk file config.php, kita letakan kodenya pada bagian yang akan menjadi kontent dari template web kita.


STEP 7 – TEMPLATE BACKEND
Selanjutnya kita akan membuat template untuk halaman setelah login (backend). Silahkan buat file dengan nama backend.php, lalu simpan pada folder xampp/htdocs/login_role_php/layouts/. Berikut kodenya :

<?php
include "system/koneksi.php";
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login + Hak Akses (PHP)</title>

    <!-- Load File CSS Bootstrap  -->
    <link href="<?php echo $base_url.'css/bootstrap.min.css'; ?>" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <style>
    body {
        min-height: 2000px;
        padding-top: 70px;
    }
    </style>
</head>

<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">My Notes Code</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="<?php echo $base_url.'index.php?page=home'; ?>">Home</a></li>
                    <li><a href="<?php echo $base_url.'index.php?page=berita'; ?>">Berita</a></li>

                    <?php
                    // Cek role user
                    if($_SESSION['role'] == 'admin'){ // Jika role-nya admin
                        ?>
                        <li><a href="<?php echo $base_url.'index.php?page=pengguna'; ?>">Pengguna</a></li>
                        <?php
                    }
                    ?>
                    
                    <li><a href="<?php echo $base_url.'index.php?page=kontak'; ?>">Kontak</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="<?php echo $base_url.'system/logout.php'; ?>">Logout</a></li>
                </ul>
            </div><!--/.nav-collapse -->
        </div>
    </nav>

    <div class="container">
        <?php include "config.php"; // Load file config.php ?>
    </div>

    <!-- Load file Javascript Bootstrap & jQuery -->
    <script src="<?php echo $base_url.'js/jquery.min.js'; ?>"></script>
    <script src="<?php echo $base_url.'js/bootstrap.min.js'; ?>"></script>
</body>
</html>

Sama seperti template login, kita akan memanggil 2 file yakni koneksi.php dan config.php.

<?php
// Cek role user
if($_SESSION[‘role’] == ‘admin’){ // Jika role-nya admin
?>
<li><a href=”<?php echo $base_url.’index.php?page=pengguna’; ?>”>Pengguna</a></li>
<?php
}
?>
Kode diatas berfungsi untuk mengecek apakah user yang login adalah admin atau bukan. Jika Admin, makan menu pengguna akan dipunculkan. Jika bukan, maka menu pengguna tidak akan ditampilkan.


STEP 8 – FORM LOGIN
Tahap selanjutnya kita akan membuat form login-nya. Silahkan buat file dengan nama login.php, lalu simpan pada folder xampp/htdocs/login_role_php/views/. Berikut tampilan dan kodenya :

Struktur Tabel - Cara Membuat CRUD Tanpa Refresh dengan Codeigniter dan Bootstrap

<?php
// Cek apakah terdapat cookie dengan nama message
if(isset($_COOKIE["message"])){ // Jika ada
    echo '<div class="alert alert-danger">'.$_COOKIE["message"].'</div>'; // Tampilkan pesannya

    setcookie("message","delete",time()-1, "/"); // Kita delete cookie message
}
?>

<form method="post" action="system/login.php">
    <div class="form-group">
        <label>Username</label>
        <input type="text" class="form-control" name="username" placeholder="Username" required autofocus>
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" class="form-control" name="password" placeholder="Password" required>
    </div>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>

Form action nya akan kita arahkan ke file system/login.php. File ini akan kita buat pada langkah selanjutnya.

$_COOKIE[“message“]
Disini kita juga menggunakan yang namanya cookie. Apa sih cookie? cookie inifungsinya hampir sama dengan session. Hanya saja perbedaannya adalah cookie menyimpan informasinya di browser yang kita gunakan. Sementara session menyimpan informasinya pada server dari web itu sendiri. Cara untuk mengambil value dari cookie pun hampir sama dengan session yakni $_COOKIE[‘nama_cookie‘]. Cookie pada tutorial ini kita gunakan untuk menampung pesan error apabila login gagal.


STEP 9 – PROSES LOGIN
Tahap selanjutnya kita akan membuat file untuk melakukan proses login sesuai data yang dikirim dari form login (views/login.php). Silahkan buat file dengan nama login.php, lalu simpan pada folder xampp/htdocs/login_role_php/system/. Berikut kodenya :

<?php
session_start(); // Start session nya

include "koneksi.php"; // Load file koneksi.php

$username = $_POST['username']; // Ambil value username yang dikirim dari form
$password = $_POST['password']; // Ambil value password yang dikirim dari form
$password = md5($password); // Kita enkripsi (encrypt) password tadi dengan md5

// Buat query untuk mengecek apakah ada data user dengan username dan password yang dikirim dari form
$sql = $pdo->prepare("SELECT * FROM user WHERE username=:a AND password=:b");
$sql->bindParam(':a', $username);
$sql->bindParam(':b', $password);
$sql->execute(); // Eksekusi querynya

$data = $sql->fetch(); // Ambil datanya dari hasil query tadi

// Cek apakah variabel $data ada datanya atau tidak
if( ! empty($data)){ // Jika tidak sama dengan empty (kosong)
  $_SESSION['username'] = $data['username']; // Set session untuk username (simpan username di session)
  $_SESSION['nama'] = $data['nama']; // Set session untuk nama (simpan nama di session)
  $_SESSION['role'] = $data['role']; // Set session untuk role (simpan role di session)

  header("location: ".$base_url."index.php?page=home"); // Kita redirect ke halaman home
}else{ // Jika $data nya kosong
  // Buat sebuah cookie untuk menampung data pesan kesalahan
  setcookie("message", "Maaf, Username atau Password salah", time()+3600, '/');

  header("location: ".$base_url."index.php"); // Redirect kembali ke halaman index.php
}
?>

include “koneksi.php”;
Kode tersebut berfungsi untuk me-load file koneksi.php.

$sql = $pdo->prepare(“SELECT * FROM user WHERE username=:a AND password=:b”);
$sql->bindParam(‘:a’, $username);
$sql->bindParam(‘:b’, $password);
$sql->execute();

Kode tersebut berfungsi untuk melakukan query ke database dan mengeksekusinya. Pada cotoh diatas, kita akan melakukan query untuk menampilkan data user berdasarkan username dan password yang telah di input pada form login.

$data = $sql->fetch()
Kode tersebut berfungsi untuk mengambil semua data hasil query dan menampung data-data tersebut di dalam sebuah array lalu menyimpannya ke dalam variabel $data. Dimana nantinya kita bisa memanggil data dari tabel pengguna dari hasil query diatas. Pada form login, saya memasukan username : rizaldi dan password: 12345678. Kalau kita lakukan print_r($data), maka hasilnya akan menjadi seperti gambar berikut :

Print R - Cara Mudah Membuat Login Multi Level User dengan PHP

Karena bentuk dari $data adalah array, maka ketika kita ingin mengakses data nya, kita tinggal panggil dengan $data[‘index_array‘]. Sebagai contoh saya ingin mengambil nama dari usernya, kita tinggal panggil $data[‘nama‘] atau kita juga bisa panggil dengan $data[3].

$_SESSION[‘username’] = $data[‘username’];
$_SESSION[‘nama’] = $data[‘nama’];
$_SESSION[‘role’] = $data[‘role’];

Sesuai yang saya katakan pada step sebelumnya, pada proses login, ketika data username dan password yang di masukkan pada form login sesuai dengan yang ada di database. Maka kita akan membuat/men-set sebuah session. Disini saya set 3 session, yang pertama adalah session username ($_SESSION[‘username’]). Session username ini saya isi dengan username yang diambil dari hasil query tadi ($data[‘username’]). Yang kedua adalah session nama ($_SESSION[‘nama’]). Session nama ini juga saya isi dengan nama yang diambil dari hasil query tadi ($data[‘nama’]). Yang ketiga adalah session role ($_SESSION[‘role’]). Session role ini juga saya isi dengan role yang diambil dari hasil query tadi ($data[‘role’]).

setcookie(“message”, “Maaf, Username atau Password salah”, time()+3600);
Kode ini berfungsi untuk membuat sebuah cookie. Seperti yang saya jelaskan, cookie ini akan kita gunakan untuk menyimpan pesan error yang nantinya akan kita tampilkan pada form login. Disini saya set masa berlaku cookie nya 1 jam (time()+3600). Struktur dasar untuk set cookie ini adalah setcookie(“nama_cookie”, “isi_cookie”, masa_berlaku);


STEP 10 – HOME
Tahap selanjutnya kita akan membuat file untuk halaman home (halaman setelah login). Silahkan buat file dengan nama home.php, lalu simpan pada folder xampp/htdocs/login_role_php/views/. Berikut tampilan dan kodenya :

Home - Cara Mudah Membuat Login Multi Level User dengan PHP

<h2 style="margin-top: 0;">
    <small>Selamat datang</small>
    <br />
    <?php echo $_SESSION['nama'] ?>
</h2>
<hr />

<div class="form-group">
    <label>Role</label>
    <br /><?php echo ucwords($_SESSION['role']) ?>
</div>

<?php
// Cek role user
if($_SESSION['role'] == 'admin'){ // Jika role-nya admin
    ?>
    <div class="form-group">
        <label>Hak Akses</label>
        <br />
        <ol style="margin-left: -25px;">
            <li>
                Akses menu home. Aksi yang diperbolehkan : Read
            </li>
            <li>
                Akses menu berita. Aksi yang diperbolehkan : Create, Read, Update, Delete
            </li>
            <li>
                Akses menu pengguna. Aksi yang diperbolehkan : Create, Read, Update, Delete
            </li>
            <li>
                Akses menu Kontak. Aksi yang diperbolehkan : Read
            </li>
        </ol>
    </div>
    <?php
}else{ // Jika role-nya operator
    ?>
    <div class="form-group">
        <label>Hak Akses</label>
        <br />
        <ol style="margin-left: -25px;">
            <li>
                Akses menu home. Aksi yang diperbolehkan : Read
            </li>
            <li>
                Akses menu berita. Aksi yang diperbolehkan : Read, Update, Delete
            <li>
                Akses menu Kontak. Aksi yang diperbolehkan : Read
            </li>
        </ol>
    </div>
    <?php
}
?>

Dalam kode diatas terdapat sebuah kode kondisi if($_SESSION[‘role’] == ‘admin’){. Kode itu untuk menampilkan data jika user yang login adalah admin. Sebaliknya jika bukan admin akan di tampilkan apa.


STEP 11 – BERITA
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama berita.php, lalu simpan pada folder xampp/htdocs/login_role_php/views/. Berikut tampilan dan kodenya :

Berita - Cara Mudah Membuat Login Multi Level User dengan PHP

<?php
// Cek role user
if($_SESSION['role'] == 'admin'){ // Jika role-nya admin
    ?>
    <div class="pull-right">
        <a href="" class="btn btn-success">TAMBAH DATA</a>
    </div>
    <?php
}
?>

<h2 style="margin-top: 0;margin-bottom: 0;">Berita</h2>
<div class="clearfix"></div>
<hr />

<div class="table-responsive">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>No</th>
                <th>Judul</th>
                <th>Deskripsi</th>
                <th>Tanggal</th>
                <th style="width: 80px;">Aksi</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>3</td>
                <td>Lorem ipsum dolor sit consectetur adipiscing elit</td>
                <td>Duis arcu augue, tincidunt id posuere suscipit, aliquam a libero. Cras varius neque quis odio varius commodo. Nullam in tellus gravida, porttitor tortor nec, bibendum nisi...</td>
                <td>12 Januari 2019</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
        </tbody>
    </table>
</div>

 if($_SESSION[‘role’] == ‘admin’){
?>
<div class=”pull-right”>
<a href=”” class=”btn btn-success”>TAMBAH DATA</a>
</div>
<?php
}
Kode diatas berfungsi untuk jika user yang login adalah admin. Makan tombol tambah akan dimunculkan, Tapi jika user yang login bukan admin, maka tombol tambah akan disembunyikan.


STEP 12 – PENGGUNA
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama pengguna.php, lalu simpan pada folder xampp/htdocs/login_role_php/views/. Berikut tampilan dan kodenya :

Pengguna - Cara Mudah Membuat Login Multi Level User dengan PHP

<div class="pull-right">
    <a href="" class="btn btn-success">TAMBAH DATA</a>
</div>

<h2 style="margin-top: 0;margin-bottom: 0;">Pengguna</h2>
<div class="clearfix"></div>
<hr />

<div class="table-responsive">
    <table class="table table-bordered table-hover">
        <thead>
            <tr>
                <th>No</th>
                <th>Username</th>
                <th>Nama</th>
                <th>Role</th>
                <th style="width: 80px;">Aksi</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>rizaldi</td>
                <td>Rizaldi Maulidia Achmad</td>
                <td>Admin</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>siska</td>
                <td>Siska Melina Rachman</td>
                <td>Operator</td>
                <td>
                    <a href="" class="btn btn-default btn-xs"><i class="glyphicon glyphicon-pencil"></i></a>
                    <a href="" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                </td>
            </tr>
        </tbody>
    </table>
</div>

STEP 13 – KONTAK
Tahap selanjutnya kita akan membuat file untuk halaman berita (halaman setelah login). Silahkan buat file dengan nama kontak.php, lalu simpan pada folder xampp/htdocs/login_role_php/views/. Berikut tampilan dan kodenya :

Kontak - Cara Mudah Membuat Login Multi Level User dengan PHP


STEP 14 – PROSES LOGOUT
Selanjutnya kita akan buat file untuk proses logoutnya. Buat sebuah file dengan nama logout.php, lalu simpan pada folder xampp/htdocs/login_role_php/system/. Berikut kodenya :

<?php
session_start(); // Start session nya
session_destroy(); // Hapus semua session

include "koneksi.php";
header("location: ".$base_url."index.php"); // Redirect ke halaman index.php
?>

session_destroy();
Kode ini berfungsi untuk menghapus semua session yang ada pada website kita.


Sekian untuk tutorial kali ini. Jika ada hal yang ingin ditanyakan, langsung tanyakan saja lewat kolom komentar dibawah ini. Jangan lupa LIKE dan SHARE nya hehe, Terimakasih.


SOURCE CODE
Untuk mengunduh source code nya, klik salah satu link dibawah ini
– Download versi PDO : Link download yang sesuai tutorial ini yakni menggunakan fungsi PDO untuk query ke databasenya
– Download versi MySQLi : Link download untuk Anda yang ingin source code versi MySQLi dari tutorial ini


SUMBER & REFERENSI
https://www.w3schools.com/php/php_sessions.asp

Tutorial membuat login dengan session di php, Tutorial mudah membuat form login menggunakan session dengan php dan mysql. Buat login pakai session dengan php. Cara buat form login dengan php dan mysql. Source code login dengan session di php

Login Multiple User

 

(Total : 42,956 viewers, 10 viewers today)
login-multi-level-user-php-mysql

ABOUT THE AUTHOR

Interested in android programming, long time focused on web development. Visit My Profile Site at www.rizaldimaulidia.com

POST YOUR COMMENTS

Your email address will not be published. Required fields are marked *

Name *

Email *

Website

37 Comments

  1. pipi kur

    pak mohon bantuannya, kok punya saya ada eror begini ya?

    PHP Warning: Cannot modify header information – headers already sent by (output started at /home/jla/public_html/hr/layouts/index.php:7) in /home/jla/public_html/hr/config.php on line 123

    config saya seperti confignya bapak:
    default: // Ini untuk set default jika isi dari $page tidak ada
    // Set halaman 404 Not Found
    header(“HTTP/1.0 404 Not Found”);
    echo “404 Not Found”;
    echo “The page that you have requested could not be found.”;
    exit();

    yang index seperti backend.php bapak:

    kirakira salahnya dimana ya pak?

  2. a_Kurnia1404

    misi mas, datanya sudah banyak, bisa di buat search sama pagination tidak mas?
    saya coba pake search ajax, pada saat tekan tombol search dan halaman iti tidak berfungsi, mohon pencerahaaanya.. Terima kasih

  3. david ariansa

    ini tutorial yang saya cari, cuma saya tidak paham membuat
    please minta no WA atau yang bisa di hubungi

  4. joseph me

    When I try login in “http://localhost/login/layouts/login.php”, and insert adin data, it will redirect me an a error page with this url:

    http://localhost/login/layouts/system/login.php

    What mean? There’s no “layouts/system/” path…maybe some url are wrong? Please, help me, thanks

    • You tried to login with wrong URL. to login you must type http://localhost/login, not http://localhost/login/layouts/login.php. Please check demo video for more detail.

      • joseph me

        Yes exactly. I was wrong to type the path 😉 Your tutorials are beautiful, why don’t you publish a tutorial on a dynamic website with cms in php and mysql with bootstrap?

        Thanks a lot and congratulations!

  5. ahmad nur hakim

    data tersebut bisa langsung di copy ? dan di paste apakah langsung berhasil ?

  6. raybandung

    gan mau tanya cara bikin banyak session untuk banyak user gmn.? coz saya bikin banyak user tapi tak bisa login bersamaan. nalah userberubah jadi satu userajayang login di semua komputer yg berbeda

    • session itu di simpan di server, dan untuk login dengan user berbeda harus dilakukan di beda komputer / laptop atau login di ignito browser kalau mau 1 laptop

  7. danang arif

    sangat membantu, thanks tutorialnya
    keep posting tutorialnya, karna berbagi itu indaah hehehe

  8. Afa Aldira

    Misi Bang, ini kok ane coba bikin versi sendiri setiap login/logout ‘object not found’ mulu, soalnya tiba-tiba di tengah linknya muncul ‘/system/’. jadi yang harusnya ‘localhost/XXX/index.php’ jadi ‘localhost/XXX/system/index.php’. Padahal di source codenya gak ada bagian yang tulisannya ‘system’ selain action post form yang di views/login.php sama include system/koneksi.php.

    Kira kira masalahnya di mana ya Bang? ._.

    • link logoutnya belum om ubah mungkin, pastikan link logout ini :
      <li><a href="<?php echo $base_url.'system/logout.php'; ?>">Logout</a></li>
      sudah di ubah url nya sesuai web yang om

      • Afa Aldira

        Udah Bang, jadinya gini: <a class="btn btn-outline-primary" style="" href="” role=”button”>Logout. Btw loginnya juga masalah sama persis, apa base_urlnya yang gak sengaja keubah ya?

  9. Ariffstb

    Buat Tutorial Tambah Data Nya Om … dan edit delet nya

    kalau sudah bagi link nya ke gmail saya

  10. rizaldi ma

    gan, knapa ketika sudah menunggu 5 detik trus ada skip add, trus di klik tapi di redirectnya ke google.com ya ?

  11. rasyid alaba

    kalo password dan username masih salah padahal koding udah benar ?

  12. Putra Abdillah Akbar

    sangat membantu banget

  13. GL--------

    thanks gan mantul,
    btw ane ada masalah nih gan, waktu mau buat page “edite/update”
    cara masukin dalam “config.php” nya gimana ya?
    Tombol url edit :
    <a href="?id=
    nah di header kan nanti dapatnya kyk ini :
    index.php?page=updatepengguna?id=35

    sementara dalam config.php kayak gini :
    case ‘updatepengguna’:
    include “views/update-penguna.php”;
    break;

    nah cara registrasi “?id=35” nya di “config.php” kayak apa gan?

    mohon pencerahannya gan 🙂

    • oh di confignya ga perlu di tambahin untuk parameter selain page nya om. jadinanti di link updatenya cukup bikin kaya gini saja om nya :
      <a href="index.php?page=updatepengguna&id=100">EDIT</a>

      Sebagai contoh ID nya adalah 100

      Mohon maaf baru sempat balas sekarang om

  14. HendriExtijer

    kok file PDO nya nggk bisa didownload ya gan, tolong diperbaikin dong

  15. ella winata

    THX ALOT!! udh saya sub dan share video nya yaa! keep posting tutorial kaya gini yaa min!, membantu refrensi saya bngt

NOTE ARCHIVES