1. Membuat laman login dan Register
index.php
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Login | Peminjaman Alat</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-4">
<div class="card shadow">
<div class="card-header text-center">
<h5>Login Sistem</h5>
</div>
<div class="card-body">
<form action="auth/proses_login.php" method="POST">
<div class="mb-3">
<label>Username</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="mb-3">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<button class="btn btn-primary w-100 mb-2">Login</button>
<div class="text-center">
Belum punya akun? <a href="register.php">Daftar disini</a>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
register.php
<?php
session_start();
require "config/database.php";
if (isset($_POST['register'])) {
$id = trim($_POST['id_nama']);
$nama = trim($_POST['nama']);
$username = trim($_POST['username']);
$password = $_POST['password'];
$no_telp = trim($_POST['no_telp'] ?? '');
// Cek username sudah ada?
$cek = $pdo->prepare("SELECT id_user FROM users WHERE username = ?");
$cek->execute([$username]);
if ($cek->rowCount() > 0) {
echo "<script>alert('Username sudah digunakan!');</script>";
} else if (empty($no_telp)) {
echo "<script>alert('Nomor telp/WA harus diisi!');</script>";
} else {
// Ambil role peminjam
$role = $pdo->query("SELECT id_role FROM roles WHERE nama_role='peminjam'")->fetch();
if ($role) {
$passHash = password_hash($password, PASSWORD_DEFAULT);
$sql = $pdo->prepare("INSERT INTO users (nama, username, password, no_telp, id_role) VALUES (?, ?, ?, ?, ?)");
$sql->execute([$nama, $username, $passHash, $no_telp, $role['id_role']]);
echo "<script>
alert('Registrasi berhasil! Silakan login.');
window.location='index.php';
</script>";
} else {
echo "<script>alert('Role peminjam belum tersedia. Hubungi admin!');</script>";
}
}
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Registrasi Peminjam</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-5">
<div class="card-header text-center">
<h5>Registrasi Akun Peminjam</h5>
</div>
<div class="mb-2">
<label>No KTP/SIM/Paspor</label>
<input type="text" name="id_nama" class="form-control" required>
</div>
<div class="card-body">
<form method="POST">
<div class="mb-3">
<label>Nama Lengkap</label>
<input type="text" name="nama" class="form-control" required>
</div>
<div class="mb-3">
<label>Username</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="mb-3">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="mb-3">
<label>Nomor Telp/WA <span class="text-danger">*</span></label>
<input type="tel" name="no_telp" class="form-control" placeholder="Contoh: 62812345678" required>
<small class="text-muted">Nomor yang aktif untuk dihubungi</small>
</div>
<button type="submit" name="register" class="btn btn-success w-100 mb-2">Daftar</button>
<a href="index.php" class="btn btn-secondary w-100">Kembali ke Login</a>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
config/database.php
<?php
$host = "localhost";
$db = "db_peminjaman_alat";
$user = "root";
$pass = "";
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$db;charset=utf8",
$user,
$pass,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
} catch (PDOException $e) {
die("Koneksi gagal: " . $e->getMessage());
}
// Fungsi untuk mencatat aktivitas/log
function logAktivitas($pdo, $id_user, $user_role, $aksi, $id_peminjaman = null, $id_alat = null, $nama_alat = null, $stok_awal = 0, $stok_akhir = 0, $jumlah = 0, $status_lama = null, $status_baru = null, $keterangan = null) {
try {
// Ambil nama user
$user = $pdo->prepare("SELECT nama FROM users WHERE id_user = ?");
$user->execute([$id_user]);
$nama_user = $user->fetchColumn() ?? 'Unknown';
$sql = "INSERT INTO log_aktivitas (id_user, nama_user, user_role, aksi, id_peminjaman, id_alat, nama_alat, stok_awal, stok_akhir, jumlah, status_lama, status_baru, keterangan)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$id_user, $nama_user, $user_role, $aksi, $id_peminjaman, $id_alat, $nama_alat, $stok_awal, $stok_akhir, $jumlah, $status_lama, $status_baru, $keterangan]);
return true;
} catch (Exception $e) {
// Log error ke error log atau silent fail
return false;
}
}
Auth/proses_login.php
<?php
session_start();
session_destroy();
header("Location: ../index.php");
exit;
Auth/logout.php
<?php
session_start();
session_destroy();
header("Location: ../index.php");
exit;
Assets/js/script.js
berikut struktur data UX