Membuat Sistem Login dengan PHP dan MySQL: Panduan Langkah-demi-Langkah

dani indra

Membuat Sistem Login dengan PHP dan MySQL: Panduan Langkah-demi-Langkah

Sistem login adalah salah satu komponen kunci dalam kebanyakan aplikasi web untuk mengidentifikasi pengguna dan memberikan akses yang sesuai. Dalam artikel ini, kita akan membahas langkah-langkah untuk membuat sistem login sederhana menggunakan PHP dan MySQL.

1. Persiapan Database dan Tabel

Sebelum memulai, pastikan Anda memiliki database dan tabel untuk menyimpan informasi pengguna. Berikut contoh query untuk membuat tabel pengguna:

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Buat Halaman Login (login.php)

Buat formulir login sederhana untuk mengumpulkan informasi login dari pengguna.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form action="process_login.php" method="post">
        <label for="username">Username:</label>
        <input type="text" name="username" required>

        <label for="password">Password:</label>
        <input type="password" name="password" required>

        <button type="submit">Login</button>
    </form>
</body>
</html>

3. Proses Login (process_login.php)

Buat skrip PHP untuk memproses informasi login dari formulir dan memeriksa dengan database.

<?php
session_start();
require_once 'db_connection.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Query untuk memeriksa keberadaan pengguna
    $query = "SELECT * FROM users WHERE username = '$username' LIMIT 1";
    $result = mysqli_query($conn, $query);

    if ($result && mysqli_num_rows($result) > 0) {
        $user = mysqli_fetch_assoc($result);

        // Memeriksa password
        if (password_verify($password, $user['password'])) {
            // Login berhasil
            $_SESSION['user_id'] = $user['id'];
            header("Location: dashboard.php");
            exit();
        } else {
            $error = "Password salah";
        }
    } else {
        $error = "Username tidak ditemukan";
    }
}

// Jika login gagal, kembali ke halaman login dengan pesan error
$_SESSION['error'] = $error;
header("Location: login.php");
exit();
?>

4. Buat Halaman Dashboard (dashboard.php)

Setelah login berhasil, arahkan pengguna ke halaman dashboard.

<?php
session_start();
require_once 'db_connection.php';

// Pastikan pengguna sudah login
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}

// Ambil informasi pengguna dari database
$user_id = $_SESSION['user_id'];
$query = "SELECT * FROM users WHERE id = $user_id LIMIT 1";
$result = mysqli_query($conn, $query);
$user = mysqli_fetch_assoc($result);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dashboard</title>
</head>
<body>
    <h2>Selamat datang, <?php echo $user['username']; ?>!</h2>
    <a href="logout.php">Logout</a>
</body>
</html>

5. Buat Skrip Logout (logout.php)

Buat skrip PHP untuk logout dan mengarahkan pengguna kembali ke halaman login.

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>

6. Koneksi ke Database (db_connection.php)

Buat skrip PHP untuk melakukan koneksi ke database.

<?php
$host = "localhost";
$username = "username";
$password = "password";
$database = "nama_database";

$conn = mysqli_connect($host, $username, $password, $database);

if (!$conn) {
    die("Koneksi Gagal: " . mysqli_connect_error());
}
?>

7. Penutup

Dengan mengikuti langkah-langkah di atas, Anda telah membuat sistem login sederhana menggunakan PHP dan MySQL. Penting untuk memahami bahwa ini hanya awal, dan untuk lingkungan produksi, Anda harus mempertimbangkan praktik keamanan tambahan seperti penggunaan prepared statements, enkripsi password, dan perlindungan terhadap serangan seperti CSRF. Teruslah belajar dan berkembang dalam mengimplementasikan fitur-fitur keamanan lebih lanjut dalam aplikasi web Anda.

Leave a Comment