Difference between revisions of "Praktik: Membuat halaman login sederhana"
Onnowpurbo (talk | contribs) (Created page with "Berikut adalah modul praktik untuk membuat halaman login sederhana menggunakan PHP pada Ubuntu 24.04, tanpa menggunakan alat dari Microsoft. Modul ini dirancang sebagai bagian...") |
Onnowpurbo (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | ==Tujuan Pembelajaran:== | |
+ | * Memahami cara mengatur lingkungan pengembangan web menggunakan LAMP (Linux, Apache, MySQL, PHP) pada Ubuntu 24.04. | ||
+ | * Membuat halaman login sederhana dengan PHP dan MySQL. | ||
+ | * Mengimplementasikan dasar-dasar autentikasi pengguna. | ||
− | + | ==Prasyarat:== | |
− | + | * Komputer dengan sistem operasi Ubuntu 24.04. | |
− | + | * Akses ke terminal dengan hak akses sudo. | |
− | + | * Koneksi internet untuk mengunduh paket yang diperlukan. | |
− | + | ==Langkah 1: Instalasi LAMP Stack== | |
− | |||
− | |||
− | |||
− | + | LAMP adalah singkatan dari Linux, Apache, MySQL, dan PHP. Berikut adalah langkah-langkah untuk menginstalnya: | |
− | + | 1. '''Perbarui daftar paket:''' | |
+ | |||
+ | sudo apt update | ||
− | + | 2. '''Instal Apache:''' | |
− | + | ||
− | + | sudo apt install apache2 | |
− | |||
− | |||
− | + | Setelah instalasi, verifikasi bahwa Apache berjalan: | |
− | + | ||
− | + | sudo systemctl status apache2 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Jika berjalan dengan baik, Anda akan melihat status "active (running)". | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 3. '''Instal MySQL:''' | |
− | + | ||
− | + | sudo apt install mysql-server | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Setelah instalasi, amankan instalasi MySQL dengan: | |
+ | |||
+ | sudo mysql_secure_installation | ||
− | + | Ikuti petunjuk untuk mengatur kata sandi root dan opsi keamanan lainnya. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 4. '''Instal PHP:''' | |
− | + | ||
− | + | sudo apt install php libapache2-mod-php php-mysql | |
− | |||
− | |||
− | + | Verifikasi instalasi PHP dengan membuat file `info.php` di direktori root web: | |
− | + | ||
− | + | echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php | |
− | |||
− | |||
− | + | Kemudian, buka `http://localhost/info.php` di browser Anda untuk melihat informasi PHP. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==Langkah 2: Membuat Basis Data dan Tabel Pengguna== | |
− | 1. | + | 1. '''Masuk ke MySQL:''' |
− | + | ||
− | + | sudo mysql -u root -p | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Masukkan kata sandi root yang telah Anda atur sebelumnya. | |
− | |||
− | + | 2. '''Buat basis data baru:''' | |
− | + | ||
− | + | CREATE DATABASE login_system; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 3. '''Gunakan basis data tersebut:''' | |
− | + | ||
− | + | USE login_system; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 4. '''Buat tabel `users`:''' | |
− | + | ||
− | + | CREATE TABLE users ( | |
+ | id INT AUTO_INCREMENT PRIMARY KEY, | ||
+ | username VARCHAR(50) NOT NULL UNIQUE, | ||
+ | password VARCHAR(255) NOT NULL | ||
+ | ); | ||
− | + | Tabel ini akan menyimpan nama pengguna dan kata sandi yang telah di-hash. | |
− | + | ||
− | + | ==Langkah 3: Membuat Formulir Login dengan PHP== | |
− | + | ||
+ | 1. '''Buat file `index.php` di direktori root web:''' | ||
+ | |||
+ | <pre> | ||
+ | <?php | ||
+ | session_start(); | ||
+ | ?> | ||
+ | <!DOCTYPE html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Login</title> | ||
+ | <style> | ||
+ | body { | ||
+ | font-family: Arial, sans-serif; | ||
+ | background-color: #f2f2f2; | ||
+ | display: flex; | ||
+ | justify-content: center; | ||
+ | align-items: center; | ||
+ | height: 100vh; | ||
+ | } | ||
+ | .container { | ||
+ | background-color: #fff; | ||
+ | padding: 20px; | ||
+ | border-radius: 5px; | ||
+ | box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); | ||
+ | } | ||
+ | input[type="text"], input[type="password"] { | ||
+ | width: 100%; | ||
+ | padding: 10px; | ||
+ | margin: 5px 0 15px 0; | ||
+ | border: 1px solid #ccc; | ||
+ | border-radius: 4px; | ||
+ | } | ||
+ | button { | ||
+ | background-color: #4CAF50; | ||
+ | color: white; | ||
+ | padding: 10px 15px; | ||
+ | border: none; | ||
+ | border-radius: 4px; | ||
+ | cursor: pointer; | ||
+ | } | ||
+ | button:hover { | ||
+ | background-color: #45a049; | ||
+ | } | ||
+ | .error { | ||
+ | color: red; | ||
+ | } | ||
+ | </style> | ||
+ | </head> | ||
+ | <body> | ||
+ | <div class="container"> | ||
+ | <h2>Login</h2> | ||
+ | <?php | ||
+ | if (isset($_SESSION['error'])) { | ||
+ | echo '<p class="error">' . $_SESSION['error'] . '</p>'; | ||
+ | unset($_SESSION['error']); | ||
+ | } | ||
+ | ?> | ||
+ | <form action="login.php" method="post"> | ||
+ | <label for="username">Username</label> | ||
+ | <input type="text" id="username" name="username" required> | ||
+ | <label for="password">Password</label> | ||
+ | <input type="password" id="password" name="password" required> | ||
+ | <button type="submit">Login</button> | ||
+ | </form> | ||
+ | </div> | ||
+ | </body> | ||
+ | </html> | ||
+ | </pre> | ||
+ | |||
+ | Kode di atas membuat formulir login dengan bidang untuk nama pengguna dan kata sandi. | ||
+ | |||
+ | 2. '''Buat file `login.php` untuk memproses login:''' | ||
+ | |||
+ | <pre> | ||
+ | <?php | ||
+ | session_start(); | ||
+ | |||
+ | // Membuat koneksi ke database | ||
+ | $mysqli = new mysqli("localhost", "root", "", "login_system"); | ||
+ | |||
+ | // Periksa koneksi | ||
+ | if ($mysqli->connect_error) { | ||
+ | die("Koneksi gagal: " . $mysqli->connect_error); | ||
+ | } | ||
+ | |||
+ | // Periksa apakah metode request adalah POST | ||
+ | if ($_SERVER["REQUEST_METHOD"] == "POST") { | ||
+ | // Mencegah SQL Injection dengan prepared statements | ||
+ | $stmt = $mysqli->prepare("SELECT id, username, password FROM users WHERE username = ?"); | ||
+ | $stmt->bind_param("s", $username); | ||
+ | |||
+ | // Ambil data dari form | ||
+ | $username = $_POST['username']; | ||
+ | $password = $_POST['password']; | ||
+ | |||
+ | // Eksekusi statement | ||
+ | $stmt->execute(); | ||
+ | $result = $stmt->get_result(); | ||
+ | |||
+ | // Periksa apakah username ditemukan | ||
+ | if ($result->num_rows == 1) { | ||
+ | $user = $result->fetch_assoc(); | ||
+ | // Verifikasi password | ||
+ | if (password_verify($password, $user['password'])) { | ||
+ | // Password benar, buat session | ||
+ | $_SESSION['user_id'] = $user['id']; | ||
+ | $_SESSION['username'] = $user['username']; | ||
+ | // Redirect ke halaman dashboard atau halaman lain yang diinginkan | ||
+ | header("Location: dashboard.php"); | ||
+ | exit(); | ||
+ | } else { | ||
+ | // Password salah | ||
+ | $error = "Password yang Anda masukkan salah."; | ||
+ | } | ||
+ | } else { | ||
+ | // Username tidak ditemukan | ||
+ | $error = "Username tidak ditemukan."; | ||
+ | } | ||
+ | |||
+ | // Tutup statement | ||
+ | $stmt->close(); | ||
+ | } | ||
+ | |||
+ | // Tutup koneksi | ||
+ | $mysqli->close(); | ||
+ | ?> | ||
+ | </pre> | ||
+ | |||
+ | ==Pranala Menarik== | ||
+ | |||
+ | * [[Web Programming]] |
Latest revision as of 06:00, 7 April 2025
Tujuan Pembelajaran:
- Memahami cara mengatur lingkungan pengembangan web menggunakan LAMP (Linux, Apache, MySQL, PHP) pada Ubuntu 24.04.
- Membuat halaman login sederhana dengan PHP dan MySQL.
- Mengimplementasikan dasar-dasar autentikasi pengguna.
Prasyarat:
- Komputer dengan sistem operasi Ubuntu 24.04.
- Akses ke terminal dengan hak akses sudo.
- Koneksi internet untuk mengunduh paket yang diperlukan.
Langkah 1: Instalasi LAMP Stack
LAMP adalah singkatan dari Linux, Apache, MySQL, dan PHP. Berikut adalah langkah-langkah untuk menginstalnya:
1. Perbarui daftar paket:
sudo apt update
2. Instal Apache:
sudo apt install apache2
Setelah instalasi, verifikasi bahwa Apache berjalan:
sudo systemctl status apache2
Jika berjalan dengan baik, Anda akan melihat status "active (running)".
3. Instal MySQL:
sudo apt install mysql-server
Setelah instalasi, amankan instalasi MySQL dengan:
sudo mysql_secure_installation
Ikuti petunjuk untuk mengatur kata sandi root dan opsi keamanan lainnya.
4. Instal PHP:
sudo apt install php libapache2-mod-php php-mysql
Verifikasi instalasi PHP dengan membuat file `info.php` di direktori root web:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Kemudian, buka `http://localhost/info.php` di browser Anda untuk melihat informasi PHP.
Langkah 2: Membuat Basis Data dan Tabel Pengguna
1. Masuk ke MySQL:
sudo mysql -u root -p
Masukkan kata sandi root yang telah Anda atur sebelumnya.
2. Buat basis data baru:
CREATE DATABASE login_system;
3. Gunakan basis data tersebut:
USE login_system;
4. Buat tabel `users`:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL );
Tabel ini akan menyimpan nama pengguna dan kata sandi yang telah di-hash.
Langkah 3: Membuat Formulir Login dengan PHP
1. Buat file `index.php` di direktori root web:
<?php session_start(); ?> <!DOCTYPE html> <html> <head> <title>Login</title> <style> body { font-family: Arial, sans-serif; background-color: #f2f2f2; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { background-color: #fff; padding: 20px; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } input[type="text"], input[type="password"] { width: 100%; padding: 10px; margin: 5px 0 15px 0; border: 1px solid #ccc; border-radius: 4px; } button { background-color: #4CAF50; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #45a049; } .error { color: red; } </style> </head> <body> <div class="container"> <h2>Login</h2> <?php if (isset($_SESSION['error'])) { echo '<p class="error">' . $_SESSION['error'] . '</p>'; unset($_SESSION['error']); } ?> <form action="login.php" method="post"> <label for="username">Username</label> <input type="text" id="username" name="username" required> <label for="password">Password</label> <input type="password" id="password" name="password" required> <button type="submit">Login</button> </form> </div> </body> </html>
Kode di atas membuat formulir login dengan bidang untuk nama pengguna dan kata sandi.
2. Buat file `login.php` untuk memproses login:
<?php session_start(); // Membuat koneksi ke database $mysqli = new mysqli("localhost", "root", "", "login_system"); // Periksa koneksi if ($mysqli->connect_error) { die("Koneksi gagal: " . $mysqli->connect_error); } // Periksa apakah metode request adalah POST if ($_SERVER["REQUEST_METHOD"] == "POST") { // Mencegah SQL Injection dengan prepared statements $stmt = $mysqli->prepare("SELECT id, username, password FROM users WHERE username = ?"); $stmt->bind_param("s", $username); // Ambil data dari form $username = $_POST['username']; $password = $_POST['password']; // Eksekusi statement $stmt->execute(); $result = $stmt->get_result(); // Periksa apakah username ditemukan if ($result->num_rows == 1) { $user = $result->fetch_assoc(); // Verifikasi password if (password_verify($password, $user['password'])) { // Password benar, buat session $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; // Redirect ke halaman dashboard atau halaman lain yang diinginkan header("Location: dashboard.php"); exit(); } else { // Password salah $error = "Password yang Anda masukkan salah."; } } else { // Username tidak ditemukan $error = "Username tidak ditemukan."; } // Tutup statement $stmt->close(); } // Tutup koneksi $mysqli->close(); ?>