Ditulis oleh : Muhammad Fathir Fatah
Nim : 607052430002
Kelas : D3 TT 48-02
config.php
<?php
// Menyimpan informasi koneksi ke database
$host = "localhost"; // Alamat server database (biasanya localhost untuk server lokal)
$user = "root"; // Username database (default XAMPP/WAMP adalah 'root')
$password = ""; // Password untuk user database (default kosong)
$database = "login_system"; // Nama database yang digunakan
// Membuat objek koneksi ke database menggunakan MySQLi
$koneksi = new mysqli($host, $user, $password, $database);
// Mengecek apakah koneksi gagal
if ($koneksi->connect_error) {
// Jika gagal, hentikan program dan tampilkan pesan error
die("Koneksi gagal: " . $koneksi->connect_error);
}
// Memulai sesi PHP
session_start();
?>
dashboard.php
<?php
// Mengimpor file konfigurasi (untuk koneksi database dan session)
include 'config.php';
// Mengecek apakah user sudah login
if (!isset($_SESSION['username'])) {
// Jika belum login, arahkan ke halaman login
header("Location: login.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<!-- Menghubungkan dengan file CSS -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<!-- Menampilkan pesan selamat datang beserta username dari session -->
<h2>Selamat datang, <?php echo htmlspecialchars($_SESSION['username']); ?>!</h2>
<!-- Tombol untuk logout -->
<a href="logout.php" class="logout">Logout</a>
</div>
</body>
</html>
login.php
<?php
// Mengimpor konfigurasi database dan memulai session
include 'config.php';
// Jika user sudah login (session username sudah ada), arahkan ke dashboard
if (isset($_SESSION['username'])) {
header("Location: dashboard.php");
exit();
}
// Jika form dikirim dengan metode POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Ambil input dari form login
$username = $_POST['username'];
$password = $_POST['password'];
// Siapkan query untuk mengambil data user berdasarkan username
$stmt = $koneksi->prepare("SELECT id, username, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username); // Bind parameter untuk mencegah SQL Injection
$stmt->execute();
$result = $stmt->get_result();
// Jika user ditemukan
if ($result->num_rows == 1) {
$user = $result->fetch_assoc();
// Verifikasi password yang dimasukkan dengan password yang ada di database
if (password_verify($password, $user['password'])) {
// Jika cocok, simpan informasi user ke session
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
// Arahkan ke dashboard
header("Location: dashboard.php");
exit();
} else {
// Password salah
$error = "Password salah!";
}
} else {
// Username tidak ditemukan
$error = "Username tidak ditemukan!";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<!-- Menghubungkan ke file CSS -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h2>Login</h2>
<!-- Menampilkan pesan error jika ada -->
<?php if (isset($error)) echo "<p class='error'>$error</p>"; ?>
<!-- Form login -->
<form method="POST">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
<!-- Link untuk mendaftar akun baru -->
<p>Belum punya akun? <a href="register.php">Daftar di sini</a></p>
</div>
</body>
</html>
logout.php
<?php
// Mengimpor konfigurasi (terutama untuk memulai session)
include 'config.php';
// Menghapus semua data session
session_unset(); // Menghapus semua variabel session
// Menghancurkan session
session_destroy(); // Mengakhiri sesi saat ini
// Mengarahkan user kembali ke halaman login
header("Location: login.php");
exit();
?>
register.php
<?php include 'config.php'; ?> // Menghubungkan ke file konfigurasi database
<!DOCTYPE html>
<html>
<head>
<title>Registrasi</title>
<link rel="stylesheet" href="style.css"> <!-- Menghubungkan ke file CSS untuk tampilan -->
</head>
<body>
<div class="container">
<h2>Daftar Akun</h2>
<?php
// Memeriksa apakah form telah dikirim melalui metode POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Mengambil input dari form dan melakukan sanitasi untuk keamanan
$username = htmlspecialchars($_POST['username']); // Mencegah serangan XSS
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); // Validasi format email
$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Enkripsi password
// Menyiapkan query untuk memasukkan data ke dalam database menggunakan prepared statement
$stmt = $koneksi->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $email, $password); // Mengikat parameter ke dalam query
// Mengeksekusi query dan menampilkan pesan berdasarkan hasilnya
if ($stmt->execute()) {
echo "<p class='success'>Registrasi berhasil! Silakan login.</p>";
} else {
echo "<p class='error'>Error: " . $stmt->error . "</p>"; // Menampilkan pesan kesalahan jika terjadi error
}
}
?>
<!-- Form registrasi -->
<form method="POST">
<input type="text" name="username" placeholder="Username" required> <!-- Input untuk username -->
<input type="email" name="email" placeholder="Email" required> <!-- Input untuk email -->
<input type="password" name="password" placeholder="Password" required> <!-- Input untuk password -->
<button type="submit">Daftar</button> <!-- Tombol submit untuk mengirim form -->
</form>
<p>Sudah punya akun? <a href="login.php">Login di sini</a></p> <!-- Link menuju halaman login -->
</div>
</body>
</html>
MySQL
//Membuat database baru untuk sistem login
CREATE DATABASE login_system;
//Menggunakan database yang baru dibuat
USE login_system;
// Membuat tabel users untuk menyimpan data pengguna
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);