Nama : Shella Nadya Putri S.
NIM : 607052430008
Kelas : 48-02
Jurnal Modul 5Jurnal Modul 5 mempelajari tentang PHP serta membuat halaman login dalam sebuah situs web.
Berikut merupakan codingan beserta penjelasan singkatnya :
<aside> ๐
config.php
</aside>
<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "login_system";
$koneksi = new mysqli($host, $user, $password, $database);
if ($koneksi->connect_error) {
die("Koneksi gagal: " . $koneksi->connect_error);
}
session_start();
?>
Kode dalam config.php digunakan untuk menghubungkan aplikasi web dengan database MySQL. Variabel seperti $host, $user, $password, dan $database diatur untuk menyimpan informasi koneksi ke database. Kemudian objek $koneksi dibuat menggunakan new mysqli() untuk mencoba menghubungkan ke database dengan informasi tersebut. Kalau koneksinya gagal, maka program akan dihentikan dan menampilkan pesan error, die(). Kalau koneksinya telah berhasil, session_start() dipanggil untuk memulai sesi yang nantinya berguna dalam mengelola data pengguna yang login atau aktif di website tersebut.
<aside> ๐
dashboard.php
</aside>
<?php include 'config.php';
if (!isset($_SESSION['username'])) {
header("Location: login.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h2>Selamat datang, <?php echo htmlspecialchars($_SESSION['username']); ?>!</h2>
<a href="logout.php" class="logout">Logout</a>
</div>
</body>
</html>
Kode dalam dashboard.php digunakan untuk membuat halaman dashboard yang hanya bisa diakses oleh pengguna yang sudah login. File config.php digunakan untuk menghubungkan file konfigurasi yang biasanya berisi koneksi ke database dan session_start (memulai sesi). $_SESSION[โusernameโ] digunakan untuk mengecek apakah pengguna sudah login atau belum. Jika belum, pengguna akan diarahkan ke halaman login.php. Jika sudah, maka halaman HTML akan menampilkan ucapan selamat datang menggunakan nama pengguna yang diambil dari sesi, serta ada juga tombol untuk logout. Hal ini berguna untuk menjaga keamanan agar hanya pengguna yang terautentikasi yang bisa mengakses halaman dashboard.
<aside> ๐
login.php
</aside>
<?php include 'config.php';
if (isset($_SESSION['username'])) {
header("Location: dashboard.php");
exit();
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $koneksi->prepare("SELECT id, username, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 1) {
$user = $result->fetch_assoc();
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
exit();
} else {
$error = "Password salah!";
}
} else {
$error = "Username tidak ditemukan!";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h2>Login</h2>
<?php if (isset($error)) echo "<p class='error'>$error</p>"; ?>
<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>
<p>Belum punya akun? <a href="register.php">Daftar di sini</a></p>
</div>
</body>
</html>
Kode dalam login.php merupakan halaman login yang digunakan untuk memverifikasi identitas pengguna sebelum mengakses dashboard. Jika pengguna sudah login, maka akan diarahkan ke dashboard.php. Ketika form login dikirim (method POST), data username dan password dari input pengguna akan diproses. Kemudian sistem mencari data pengguna berdasarkan username di database menggunakan prepared statement agar lebih aman dari serangan SQL injection. Jika username ditemukan dan password sesuai (dicek lewat password_verify()), maka data pengguna disimpan ke dalam session dan diarahkan ke halaman dashboard. Jika tidak sesuai, makan akan muncul pesan error.