Membuat Login PHP dan Register PHP versi MySQLi – Episode 2

Berikut adalah rangkuman langkah-langkah untuk membuat fitur login dan register menggunakan PHP native dan mysqli_query() (tanpa menggunakan prepared statements):

1. Persiapan Database

  • Buat database di MySQL (misalnya db_login).
  • Buat tabel pengguna (users) dengan struktur sebagai berikut:
sqlCopy codeCREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • Kolom password harus di-hash, sehingga menggunakan bcrypt atau algoritma hashing lainnya untuk keamanan.

2. Konfigurasi Koneksi Database

  • Buat file config.php untuk mengatur koneksi ke database.
phpCopy code<?php
$host = 'localhost';
$username = 'root';  // username database
$password = '';      // password database
$dbname = 'db_login'; // nama database

// Koneksi ke MySQL
$conn = mysqli_connect($host, $username, $password, $dbname);

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

3. Fitur Register

  • Buat form register di file register.php:
phpCopy code<form method="post" action="register.php">
    <label for="username">Username:</label>
    <input type="text" name="username" required>
    <label for="email">Email:</label>
    <input type="email" name="email" required>
    <label for="password">Password:</label>
    <input type="password" name="password" required>
    <button type="submit" name="register">Register</button>
</form>
  • Proses penyimpanan data di register.php:
phpCopy code<?php
include('config.php');

if (isset($_POST['register'])) {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Hash password

    $query = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";
    
    if (mysqli_query($conn, $query)) {
        echo "Registration successful!";
    } else {
        echo "Error: " . mysqli_error($conn);
    }
}
?>

4. Fitur Login

  • Buat form login di file login.php:
phpCopy code<form method="post" action="login.php">
    <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" name="login">Login</button>
</form>
  • Proses verifikasi login di login.php:
phpCopy code<?php
session_start();
include('config.php');

if (isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $query = "SELECT * FROM users WHERE username = '$username'";
    $result = mysqli_query($conn, $query);
    
    if (mysqli_num_rows($result) > 0) {
        $user = mysqli_fetch_assoc($result);
        if (password_verify($password, $user['password'])) {
            $_SESSION['user_id'] = $user['id'];
            $_SESSION['username'] = $user['username'];
            header('Location: dashboard.php'); // Arahkan ke halaman setelah login
        } else {
            echo "Incorrect password!";
        }
    } else {
        echo "Username not found!";
    }
}
?>

5. Menyimpan Status Login

  • Setelah login berhasil, Anda dapat menggunakan session untuk menyimpan status login pengguna dan mengaksesnya di halaman lain.
phpCopy code<?php
session_start();

if (isset($_SESSION['username'])) {
    echo "Welcome, " . $_SESSION['username'];
} else {
    echo "Please login first.";
}
?>

6. Logout

  • Untuk logout, cukup gunakan kode berikut di logout.php:
phpCopy code<?php
session_start();
session_destroy();
header('Location: login.php');
exit();
?>

7. Keamanan

  • Validasi Input: Selalu validasi input dari pengguna untuk menghindari serangan seperti SQL Injection dan Cross-Site Scripting (XSS). Meskipun kode ini menggunakan mysqli_query(), sebaiknya hindari menggunakan query langsung seperti ini, dan lebih baik menggunakan prepared statements untuk meningkatkan keamanan.
  • Password Hashing: Gunakan password_hash() dan password_verify() untuk mengelola password dengan aman. Jangan pernah menyimpan password dalam bentuk teks biasa.
  • Session Management: Gunakan session untuk mengelola status login dan pastikan sesi diakhiri setelah logout.

Catatan Penting:

Penggunaan mysqli_query() dalam kode di atas berisiko terhadap serangan SQL Injection jika input dari pengguna tidak dibersihkan dengan benar. Oleh karena itu, sangat disarankan untuk selalu menggunakan prepared statements atau mysqli_real_escape_string() saat menangani input pengguna.

Namun, jika Anda ingin menggunakan mysqli_query(), pastikan Anda sudah memvalidasi dan membersihkan input dengan hati-hati untuk mengurangi risiko tersebut.

Dengan mengikuti langkah-langkah di atas, Anda dapat membuat sistem login dan register menggunakan PHP native dan mysqli_query().

Referensi Lainnya :

  • https://drive.google.com/file/d/1HP8zunG7DmvrpZA8fc8ocQCr2Us5z__L/view?usp=classroom_web&authuser=0
Tags :

Leave a Reply

Your email address will not be published. Required fields are marked *

15 − one =

Tutorial Terpopuler

Tutorial Pilihan

Tentang Gurututorku

Gurututorku adalah sebuah kursus online maupun offline yang menyediakan berbagai macam tutorial tentang pemrograman, design, dan multimedia serta artikel teknologi yang tentunya bisa dinikmati dan dipelajari oleh semua orang yang baru ingin belajar dunia IT.

© 2024 – Gurututorku.com | Learning today success tomorrow.