Sistem login adalah fitur dasar yang wajib ada dalam sebuah website. Salah satu metode klasik yang sering digunakan dalam pembelajaran adalah menggunakan fungsi MD5() untuk mengenkripsi password.
MD5 akan mengubah teks menjadi hash 32 karakter yang tidak bisa dikembalikan ke bentuk aslinya.
Namun perlu diingat, metode ini sudah tidak aman untuk produksi, karena mudah dipecahkan. Meski begitu, MD5 masih sering digunakan untuk pembelajaran dasar.
Apa Itu MD5 dalam PHP
MD5 adalah fungsi hashing yang digunakan untuk mengenkripsi password.
Contoh penggunaan:
echo md5("admin123");
// Output: e99a18c428cb38d5f260853678922e03
Fungsi ini mengubah string menjadi hash unik.
Membuat Database dan Tabel User
Langkah pertama adalah membuat database dan tabel users:
CREATE DATABASE db_login_md5;
USE db_login_md5;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
Masukkan data user:
INSERT INTO users (username, password) VALUES
('admin', MD5('admin123'));
Membuat Koneksi Database (config.php)
Buat file config.php untuk koneksi database:
<?php
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'db_login_md5';
$koneksi = new mysqli($host, $username, $password, $database);
if ($koneksi->connect_error) {
die("Koneksi gagal: " . $koneksi->connect_error);
}
session_start();
?>
Membuat Form Login (login.php)
Berikut tampilan form login sederhana:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Login MD5</title>
<style>
body { background: #f4f4f4; font-family: Arial; }
.box { width: 300px; margin: 100px auto; padding: 20px; background: #fff; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
input, button { width: 100%; padding: 10px; margin: 10px 0; }
button { background: #007bff; color: white; border: none; cursor: pointer; }
</style>
</head>
<body>
<div class="box">
<h2>Login</h2>
<?php if (isset($_GET['error'])): ?>
<p style="color:red;">Username atau password salah.</p>
<?php endif; ?>
<form method="POST" action="proses_login.php">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Masuk</button>
</form>
</div>
</body>
</html>
Proses Login (proses_login.php)
File ini memproses data login:
<?php
require_once 'config.php';
$username = $_POST['username'];
$password = md5($_POST['password']);
// Gunakan prepared statement
$query = $koneksi->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$query->bind_param("ss", $username, $password);
$query->execute();
$result = $query->get_result();
if ($result->num_rows === 1) {
$_SESSION['login'] = true;
$_SESSION['username'] = $username;
header("Location: dashboard.php");
} else {
header("Location: login.php?error=1");
}
?>
Halaman Dashboard (dashboard.php)
<?php
require_once 'config.php';
if (!isset($_SESSION['login'])) {
header("Location: login.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
</head>
<body>
<h1>Halo, <?php echo htmlspecialchars($_SESSION['username']); ?>!</h1>
<p><a href="logout.php">Logout</a></p>
</body>
</html>
Logout (logout.php)
<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit();
?>
Kelebihan dan Kekurangan MD5
Kelebihan:
- Mudah digunakan
- Cepat diimplementasikan
- Cocok untuk belajar dasar
Kekurangan:
- Tidak aman untuk produksi
- Mudah di-crack
- Tidak memiliki sistem salt
Rekomendasi Keamanan
Untuk penggunaan nyata, sangat disarankan menggunakan:
- password_hash()
- password_verify()
Karena jauh lebih aman dan sudah menjadi standar modern PHP.
Kesimpulan
Membuat sistem login dengan MD5 adalah langkah awal yang baik untuk memahami cara kerja autentikasi di PHP.
Meskipun tidak direkomendasikan untuk aplikasi produksi, metode ini tetap penting sebagai dasar sebelum beralih ke sistem keamanan yang lebih kuat.
Jika kamu ingin mengembangkan sistem login yang lebih aman, langkah selanjutnya adalah menggunakan password_hash() dan password_verify().
Kalau kamu mau, lanjut kirim artikel berikutnya tentang versi secure-nya, nanti kita jadikan seri biar SEO-nya kuat dan saling terhubung.