Sunday, December 7, 2025

Pertemuan 14 | Multi-Level User

Nama : Naufal Daffa Alfa Zain

NRP   : 5025241066

Kelas  :  Pemrograman Web B2 

    Pada pertemuan ketujuh mata kuliah Pemrograman Web – B, saya mendapatkan tugas untuk membangun aplikasi login dengan session multi-level user (Administrator, Dosen, Mahasiswa) berbasis PHP sesuai contoh blogspot. Tujuannya agar setiap user yang berhasil login langsung diarahkan ke halaman sesuai levelnya, dan halaman lain yang tidak sesuai level tertutup aksesnya.

    Dalam implementasinya, saya membuat form login (index.php) yang memproses kredensial lewat file login.php, menyimpan session username dan level, lalu mengarahkan ke halaman haladmin.php, hallecturer.php, atau halstudent.php. Masing-masing halaman dilindungi oleh file cekadmin.php, ceklecturer.php, dan cekstudent.php yang memeriksa session dan level, sehingga pengguna yang tidak sesuai akan ditolak.

    Database multilogin saya siapkan dengan tabel user (username, password, level, img) menggunakan skrip multilogin.sql. Saya menggunakan akun contoh: ilmudetil (Administrator), zakaria (Dosen), dan desi (Mahasiswa), lengkap dengan ikon profil sederhana. Untuk memudahkan uji coba tanpa root MySQL, saya menyiapkan instance MariaDB lokal pada port 3307 dengan user multilogin tanpa password, dan koneksi dibaca melalui file connection.php (bisa juga lewat environment variable).

    Selain itu, saya memastikan setiap halaman memuat navbar dengan informasi user yang sedang login dan tautan konten yang berbeda untuk tiap level, serta tombol logout yang menghapus session. Dengan struktur ini, pengalaman login terasa konsisten dan kontrol akses per level berfungsi tanpa harus memuat ulang atau memilih level secara manual saat login.

 

Page Login

 

 

Page Admin 

  

 

Page Dosen 

 

 

Page Mahasiswa 

 

 Source Code saya dapatkan dari blogspot berikut

ditambah dengan penyesuaian file database, yaitu

multilogin.sql

CREATE DATABASE IF NOT EXISTS `multilogin`;
USE `multilogin`;

CREATE TABLE IF NOT EXISTS `user` (
`username` varchar(20) NOT NULL,
`password` varchar(50) NOT NULL,
`level` enum('Administrator','Mahasiswa','Dosen') NOT NULL,
`img` varchar(200) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `user` (`username`, `password`, `level`, `img`) VALUES
('desi', 'desi', 'Mahasiswa', 'desi.png'),
('ilmudetil', 'ilmudetil', 'Administrator', 'ilmudetil.png'),
('zakaria', 'zakaria', 'Dosen', 'zakaria.png');


 

start_local_mysql.sh

#!/usr/bin/env bash
set -euo pipefail

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DATA_DIR="$DIR/.mysql-local"
SOCKET="$DATA_DIR/mysql.sock"
PORT=3307

if ! pgrep -f "mysqld.*${DATA_DIR}" >/dev/null 2>&1; then
echo "Starting local MariaDB on port ${PORT}..."
mysqld --datadir="$DATA_DIR" --socket="$SOCKET" --port="$PORT" --bind-address=127.0.0.1 --skip-networking=0 --pid-file="$DATA_DIR/mysql.pid" >/tmp/mysqld-local.log 2>&1 &
else
echo "Local MariaDB already running."
fi


 

No comments:

Post a Comment

Pertemuan 13 | Abstract Class

 Nama     : Naufal Daffa Alfa Zain  Nrp         : 5025241066  Kelas      : Pemrograman Web A2 Pada pertemuan ke‑13 kami mendapat dua tugas. ...