Sistem Multi‑Role: Admin & User dengan Redirect Otomatis

👥 Tutorial PHP: Login dengan Role Admin & User (Redirect Otomatis)

Hai teman coder! Sudah punya sistem login? Yuk, tambahkan fitur role “admin” dan “user” dengan pengalihan otomatis setelah login. Cocok untuk aplikasi nyata seperti dashboard admin!

🔍 Apa yang Akan Kita Buat?

Preview Halaman Login

1. Update Struktur Tabel `users`


ALTER TABLE users
ADD COLUMN role ENUM('admin','user') NOT NULL DEFAULT 'user';

Tiap user sekarang punya kolom role – bisa “admin” atau “user”. Default=“user”.

2. Update Registrasi (register.php)


<?php
// ... koneksi dan form handling
$role = 'user'; // user biasa
$stmt = $conn->prepare(
  "INSERT INTO users(username,email,password,role) VALUES(?,?,?,?)"
);
$stmt->bind_param("ssss",$u,$e,$p,$role);
// ...
?>

3. Login dan Redirect berdasarkan Role (login.php)

Login Role PHP

<?php
session_start(); require 'config.php';
if($_SERVER['REQUEST_METHOD']=='POST'){
  // cek username/email & password
  $stmt = $conn->prepare(
    "SELECT id,username,password,role FROM users WHERE username=? OR email=?"
  );
  $stmt->bind_param("ss",$ue,$ue);
  $stmt->execute(); $res = $stmt->get_result();
  if($res->num_rows===1){
    $u = $res->fetch_assoc();
    if(password_verify($p,$u['password'])){
      session_regenerate_id();
      $_SESSION = [
        'user_id'=>$u['id'],
        'username'=>$u['username'],
        'role'=>$u['role']
      ];
      // redirect otomatis
      if($u['role']==='admin'){
        header("Location: admin/dashboard.php");
      } else {
        header("Location: user/home.php");
      }
      exit;
    }
  }
  $err="Login gagal!";
}
?>

4. Buat Dashboard untuk Admin/User


// admin/dashboard.php
session_start();
if($_SESSION['role']!=='admin') header("Location: ../login.php");
echo "<h2>Halo Admin, ".$_SESSION['username']."!</h2>";

// user/home.php
session_start();
if($_SESSION['role']!=='user') header("Location: ../login.php");
echo "<h2>Halo ".$_SESSION['username']."! Selamat datang di Home.</h2>";

5. Logout


// logout.php
session_start();
session_destroy();
header("Location: login.php");
exit;

6. Proteksi Halaman & Navigasi

  • Gunakan `if($_SESSION['role']=='admin')` di semua admin-only page.
  • Di halaman user, arahkan ke dashboard user. Bila bukan, kembali ke login.
  • Sertakan menu & link logout di setiap dashboard.

🎯 Ringkasan

Dengan tambahan kolom role dan logic redirect di login, kamu sudah punya sistem multi-role: admin & user. Tinggal kembangkan sesuai kebutuhan—misal halaman kelola konten, billing, dsb.

Mau saya lanjutkan ke part 5? Misal: menambahkan fitur super-admin, manajemen user list, atau middleware akses role khusus? Tuliskan ide kamu!

Posting Komentar untuk "Sistem Multi‑Role: Admin & User dengan Redirect Otomatis"