Cover Image

Tutorial Membuat Secure Admin Panel PHP & MySQL: Sistem Login Multi User, Role Access & Proteksi Lengkap (Production Ready)

Pendahuluan

Membuat admin panel bukan hanya soal CRUD dan dashboard. Jika sistem tidak aman, maka seluruh database bisa bocor hanya karena satu celah kecil.

Cara Membuat Website Direktori AI Tools yang SEO Friendly dan Berpotensi Lolos AdSense (Panduan Lengkap 2026)

Dalam panduan lengkap ini, kita akan membangun Secure Admin Panel menggunakan PHP & MySQL dengan fitur:

  • Login Multi User (Admin & User)
  • Role Based Access Control
  • Prepared Statement (Anti SQL Injection)
  • Proteksi XSS
  • CSRF Token Protection
  • Rate Limit Login
  • Session Protection
  • Upload File Aman
  • Dashboard Profesional

1. Struktur Folder Profesional


/admin-panel
│
├── config/
│   └── database.php
│
├── auth/
│   ├── login.php
│   ├── register.php
│   ├── logout.php
│
├── middleware/
│   └── auth.php
│
├── dashboard/
│   └── index.php
│
├── uploads/
│
└── index.php

2. Membuat Database


CREATE DATABASE secure_admin;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(100) NOT NULL,
  email VARCHAR(150) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL,
  role ENUM('admin','user') DEFAULT 'user',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3. Koneksi Database (database.php)


<?php
$conn = new mysqli("localhost","root","","secure_admin");
if ($conn->connect_error) {
    die("Connection failed");
}
?>

4. Sistem Register (Secure)


<?php
include "../config/database.php";

$username = htmlspecialchars($_POST['username']);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

$stmt = $conn->prepare("INSERT INTO users (username,email,password) VALUES (?,?,?)");
$stmt->bind_param("sss",$username,$email,$password);
$stmt->execute();
echo "Register berhasil";
?>

5. Login dengan Rate Limit


session_start();
include "../config/database.php";

if(!isset($_SESSION['login_attempt'])){
    $_SESSION['login_attempt']=0;
}

if($_SESSION['login_attempt']>5){
    die("Terlalu banyak percobaan login");
}

$email = $_POST['email'];
$password = $_POST['password'];

$stmt = $conn->prepare("SELECT * FROM users WHERE email=?");
$stmt->bind_param("s",$email);
$stmt->execute();
$result=$stmt->get_result();
$user=$result->fetch_assoc();

if($user && password_verify($password,$user['password'])){
    session_regenerate_id(true);
    $_SESSION['user']=$user['username'];
    $_SESSION['role']=$user['role'];
    header("Location: ../dashboard/index.php");
}else{
    $_SESSION['login_attempt']++;
    echo "Login gagal";
}

6. Middleware Role Protection


<?php
session_start();
if(!isset($_SESSION['user'])){
    header("Location: ../auth/login.php");
    exit;
}

if($_SESSION['role']!='admin'){
    die("Akses ditolak");
}
?>

7. Dashboard Aman


<?php include "../middleware/auth.php"; ?>

<h2>Dashboard Admin</h2>
<p>Selamat datang, <?= htmlspecialchars($_SESSION['user']); ?></p>
<a href="../auth/logout.php">Logout</a>

8. CSRF Token Protection


$_SESSION['csrf_token']=bin2hex(random_bytes(32));
Form:

<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token']; ?>">
Validasi:

if($_POST['csrf_token']!==$_SESSION['csrf_token']){
    die("Invalid CSRF Token");
}

9. Upload File Aman


$allowed=['jpg','png','jpeg'];
$filename=$_FILES['file']['name'];
$ext=pathinfo($filename,PATHINFO_EXTENSION);

if(in_array($ext,$allowed)){
    move_uploaded_file($_FILES['file']['tmp_name'],"../uploads/".$filename);
}else{
    die("Format tidak diizinkan");
}

10. Proteksi Session


ini_set('session.cookie_httponly',1);
ini_set('session.cookie_secure',1);

11. Checklist Production

  • ✔ Semua query prepared statement
  • ✔ Password di-hash
  • ✔ CSRF token aktif
  • ✔ Session regenerate aktif
  • ✔ Rate limit login
  • ✔ HTTPS aktif
  • ✔ Error tidak ditampilkan
  • ✔ Permission folder aman

Penutup

Dengan sistem ini, kamu sudah memiliki Secure Admin Panel Production Ready yang bisa digunakan untuk project nyata.

Fondasi ini bisa dikembangkan menjadi:

Apa Itu HTML? Cara Membuat Struktur Website Pertama untuk Pemula (Lengkap 2026)
  • Sistem manajemen konten
  • Website membership
  • Aplikasi internal perusahaan
  • Dashboard SaaS

Bangun kebiasaan secure coding sejak awal.