Project PHP & MySQL: Membuat Sistem Login User
Membuat sistem login user adalah salah satu skill fundamental dalam pengembangan web. Dengan PHP dan MySQL, Anda dapat membuat sistem autentikasi yang aman untuk website atau aplikasi Anda. Artikel ini akan memandu Anda langkah demi langkah membuat sistem login, mulai dari database hingga halaman dashboard yang diproteksi.
Mengapa Membuat Sistem Login?
- Keamanan Data: Hanya pengguna terdaftar yang bisa mengakses konten tertentu.
- Personalisasi: Menyediakan pengalaman pengguna yang disesuaikan (user-specific content).
- Fondasi untuk Fitur Lanjutan: Seperti manajemen profil, transaksi, atau forum.
Persiapan Awal
- Install XAMPP/WAMP
Unduh dari situs resmi dan install. Ini akan menyediakan PHP, MySQL, dan server lokal di komputer Anda. - Buka Text Editor
Gunakan VS Code untuk menulis kode. - Struktur Folder:
📂 login-system ├── index.php (Halaman login) ├── register.php (Halaman registrasi) ├── dashboard.php (Halaman setelah login) ├── logout.php (Proses logout) ├── style.css (Styling) └── includes/ ├── config.php (Koneksi database) └── functions.php(Fungsi validasi)
- Buka phpMyAdmin
Ketikhttp://localhost/phpmyadmin
di browser. Ini adalah tempat kita mengelola database.
Langkah 1: Membuat Database
- Di phpMyAdmin:
- Klik New → Beri nama database:
login_system
→ Create.
- Klik New → Beri nama database:
- Buat tabel
users
:- Klik SQL → Salin kode ini → Klik Go:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, email VARCHAR(100) UNIQUE, password VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );
- Klik SQL → Salin kode ini → Klik Go:
Penjelasan Tabel:
id
: Nomor unik untuk setiap user (otomatis).username
&email
: Harus unik, tidak boleh sama dengan user lain.password
: Disimpan dalam bentuk terenkripsi (aman!).
Langkah 2: Membuat File Koneksi ke Database (config.php
)
Buat file config.php
dan isi dengan:
<?php
$host = "localhost"; // Server database
$user = "root"; // Username default XAMPP
$pass = ""; // Password default XAMPP (kosong)
$db = "login_system"; // Nama database
// Koneksi ke database
$conn = mysqli_connect($host, $user, $pass, $db);
// Cek error
if (!$conn) {
die("Koneksi gagal: " . mysqli_connect_error());
}
?>
Tips:
- Simpan file ini di folder
includes
agar rapi. - File ini akan dipanggil di halaman lain untuk terhubung ke database.
Langkah 3: Membuat Halaman Registrasi (register.php
)
3.1. Tampilan Form Registrasi (HTML)
<!DOCTYPE html> <html> <head> <title>Daftar Akun</title> <style> .container { max-width: 400px; margin: 50px auto; padding: 20px; } .form-group { margin-bottom: 15px; } input { width: 100%; padding: 8px; } button { background: #007bff; color: white; padding: 10px; border: none; } </style> </head> <body> <div class="container"> <h2>Daftar Akun Baru</h2> <form method="POST"> <div class="form-group"> <input type="text" name="username" placeholder="Username" required> </div> <div class="form-group"> <input type="email" name="email" placeholder="Email" required> </div> <div class="form-group"> <input type="password" name="password" placeholder="Password" required> </div> <button type="submit" name="register">Daftar Sekarang</button> </form> <p>Sudah punya akun? <a href="index.php">Login di sini</a>.</p> </div> </body> </html>
3.2. Proses Registrasi (PHP)
Tambahkan di awal file register.php
(sebelum tag <html>
):
<?php
include 'includes/config.php'; // Panggil koneksi database
if (isset($_POST['register'])) {
// Ambil data dari form
$username = $_POST['username'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Enkripsi password
// Simpan ke database
$query = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";
if (mysqli_query($conn, $query)) {
echo "<script>alert('Daftar berhasil! Silakan login.'); window.location='index.php';</script>";
} else {
echo "Error: " . mysqli_error($conn);
}
}
?>
Penjelasan:
password_hash()
: Mengubah password menjadi kode acak (misal:$2y$10$AbCdE...
) untuk keamanan.mysqli_query()
: Mengirim perintah SQL ke database.
Langkah 4: Membuat Halaman Login (index.php
)
4.1. Tampilan Form Login
<div class="container"> <h2>Login</h2> <form method="POST"> <div class="form-group"> <input type="text" name="username_email" placeholder="Username atau Email" required> </div> <div class="form-group"> <input type="password" name="password" placeholder="Password" required> </div> <button type="submit" name="login">Masuk</button> </form> </div>
4.2. Proses Login (PHP)
Tambahkan di awal file index.php
:
<?php
session_start(); // Mulai session
include 'includes/config.php';
if (isset($_POST['login'])) {
$username_email = $_POST['username_email'];
$password = $_POST['password'];
// Cari user di database
$query = "SELECT * FROM users WHERE username='$username_email' OR email='$username_email'";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) == 1) {
$user = mysqli_fetch_assoc($result);
// Cocokkan password
if (password_verify($password, $user['password'])) {
// Simpan data user di session
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php"); // Redirect ke dashboard
exit();
} else {
echo "<script>alert('Password salah!');</script>";
}
} else {
echo "<script>alert('Akun tidak ditemukan!');</script>";
}
}
?>
Analogi Session:
- Session seperti kartu anggota yang Anda dapatkan setelah login.
- Kartu ini akan diperiksa setiap kali Anda mengakses halaman terproteksi (misal: dashboard).
Langkah 5: Membuat Halaman Dashboard (dashboard.php
)
<?php session_start(); // Pastikan session dimulai // Jika belum login, redirect ke halaman login if (!isset($_SESSION['user_id'])) { header("Location: index.php"); exit(); } ?> <!DOCTYPE html> <html> <head> <title>Dashboard</title> </head> <body> <div class="container"> <h2>Halo, <?php echo $_SESSION['username']; ?>! 👋</h2> <p>Ini adalah halaman khusus untuk Anda.</p> <a href="logout.php">Logout</a> </div> </body> </html>
Langkah 6: Membuat Logout (logout.php
)
Buat file logout.php
dengan kode:
<?php
session_start(); // Akses session yang ada
session_unset(); // Hapus semua data session
session_destroy(); // Hancurkan session
header("Location: index.php"); // Kembali ke halaman login
exit();
?>
Cara Testing
- Buka
http://localhost/login-system/register.php
→ Daftarkan akun. - Buka
http://localhost/login-system/index.php
→ Login dengan akun yang sudah dibuat. - Jika berhasil, Anda akan diarahkan ke
dashboard.php
.
Solusi Jika Error
- Koneksi Database Gagal:
Pastikan XAMPP/WAMP sudah menyala dan nama database sesuai. - Password Tidak Cocok:
Pastikan menggunakanpassword_hash()
saat registrasi danpassword_verify()
saat login. - Session Tidak Bekerja:
Pastikansession_start()
ada di awal file sebelum tag<html>
.
Kesimpulan
Dengan mengikuti panduan ini, Anda telah membuat sistem login user yang aman menggunakan PHP dan MySQL. Sistem ini dapat dikembangkan lebih lanjut dengan menambahkan fitur seperti reset password, verifikasi email, atau two-factor authentication (2FA).
Good
Terimakasih!🙌🙌