Implementasi Sistem Login dan Registrasi pada Aplikasi Penjualan Tiket Online: Panduan Lengkap dengan Source Code
Table of Content
Implementasi Sistem Login dan Registrasi pada Aplikasi Penjualan Tiket Online: Panduan Lengkap dengan Source Code

Industri penjualan tiket online berkembang pesat, menuntut sistem yang handal, aman, dan mudah digunakan. Salah satu komponen krusial dalam sistem tersebut adalah modul login dan registrasi pengguna. Modul ini menjadi gerbang akses bagi pengguna untuk mengakses fitur-fitur utama aplikasi, mulai dari browsing tiket hingga melakukan transaksi pembelian. Artikel ini akan membahas secara detail implementasi sistem login dan registrasi pada aplikasi penjualan tiket online, termasuk contoh source code menggunakan PHP dan MySQL.
I. Perancangan Database
Sebelum memulai pemrograman, kita perlu merancang database yang akan menyimpan data pengguna. Database ini akan menyimpan informasi penting seperti username, password, email, dan data profil lainnya. Berikut skema database yang disarankan:
Tabel: users
| Kolom | Tipe Data | Keterangan |
|---|---|---|
| user_id | INT(11) | ID pengguna (primary key, auto-increment) |
| username | VARCHAR(255) | Nama pengguna (unique) |
| password | VARCHAR(255) | Password pengguna (di-hash) |
| VARCHAR(255) | Alamat email pengguna (unique) | |
| nama_lengkap | VARCHAR(255) | Nama lengkap pengguna |
| no_telepon | VARCHAR(20) | Nomor telepon pengguna |
| alamat | TEXT | Alamat pengguna |
| registered_at | TIMESTAMP | Tanggal registrasi |
| last_login | TIMESTAMP | Tanggal login terakhir |
II. Implementasi Registrasi Pengguna
Proses registrasi memungkinkan pengguna baru untuk membuat akun. Form registrasi akan meminta informasi penting seperti username, password, email, dan data profil lainnya. Setelah data diisi, aplikasi akan memvalidasi data, kemudian menyimpannya ke database. Berikut contoh source code PHP untuk proses registrasi:
<?php
// Koneksi ke database
$conn = new mysqli("localhost", "username", "password", "nama_database");
if ($conn->connect_error)
die("Koneksi gagal: " . $conn->connect_error);
// Ambil data dari form registrasi
$username = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
$nama_lengkap = $_POST["nama_lengkap"];
$no_telepon = $_POST["no_telepon"];
$alamat = $_POST["alamat"];
// Validasi data
// ... (penambahan validasi data, contoh: cek username/email unik, panjang password, dll.) ...
// Hash password sebelum disimpan ke database
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// Query untuk menyimpan data pengguna
$sql = "INSERT INTO users (username, password, email, nama_lengkap, no_telepon, alamat)
VALUES ('$username', '$hashed_password', '$email', '$nama_lengkap', '$no_telepon', '$alamat')";
if ($conn->query($sql) === TRUE)
echo "Registrasi berhasil!";
// Redirect ke halaman login
header("Location: login.php");
else
echo "Error: " . $sql . "<br>" . $conn->error;
$conn->close();
?>
III. Implementasi Login Pengguna
Proses login memverifikasi identitas pengguna berdasarkan username dan password yang dimasukkan. Aplikasi akan membandingkan password yang dimasukkan dengan password yang tersimpan di database (yang telah di-hash). Jika cocok, pengguna akan diarahkan ke halaman utama aplikasi. Berikut contoh source code PHP untuk proses login:
<?php
// Koneksi ke database
$conn = new mysqli("localhost", "username", "password", "nama_database");
if ($conn->connect_error)
die("Koneksi gagal: " . $conn->connect_error);
// Ambil data dari form login
$username = $_POST["username"];
$password = $_POST["password"];
// Query untuk mengambil data pengguna
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
$row = $result->fetch_assoc();
// Verifikasi password menggunakan password_verify()
if (password_verify($password, $row["password"]))
// Login berhasil
session_start();
$_SESSION["user_id"] = $row["user_id"];
$_SESSION["username"] = $row["username"];
// Redirect ke halaman utama
header("Location: index.php");
else
echo "Password salah!";
else
echo "Username tidak ditemukan!";
$conn->close();
?>
IV. Penggunaan Session untuk Mengelola Status Login
Setelah login berhasil, penting untuk menggunakan session untuk menyimpan informasi pengguna yang telah login. Session adalah mekanisme untuk menyimpan data sementara di sisi server, yang terkait dengan sesi browser pengguna. Pada contoh di atas, session_start() memulai session, dan data pengguna seperti user_id dan username disimpan dalam variabel session. Data ini dapat diakses di halaman-halaman lain selama sesi masih aktif. Jangan lupa untuk menghancurkan session saat pengguna logout.
V. Implementasi Logout
Proses logout akan menghapus session yang terkait dengan pengguna, sehingga pengguna tidak lagi terautentikasi. Berikut contoh source code PHP untuk proses logout:
<?php
session_start();
session_destroy();
header("Location: login.php");
?>
VI. Keamanan Aplikasi
Keamanan aplikasi sangat penting untuk melindungi data pengguna. Berikut beberapa tips untuk meningkatkan keamanan:
- Gunakan password hashing: Jangan pernah menyimpan password dalam bentuk plain text. Gunakan fungsi
password_hash()untuk meng-hash password sebelum disimpan ke database. - Validasi input: Selalu validasi input pengguna untuk mencegah serangan injeksi SQL dan cross-site scripting (XSS).
- Sanitasi data: Bersihkan data input sebelum digunakan dalam query database untuk mencegah serangan injeksi SQL.
- Lindungi koneksi database: Gunakan username dan password yang kuat untuk koneksi database.
- Gunakan HTTPS: Enkripsi lalu lintas antara browser dan server menggunakan protokol HTTPS untuk melindungi data sensitif.
- Implementasi CAPTCHA: Tambahkan CAPTCHA pada form registrasi untuk mencegah bot melakukan registrasi massal.
- Regular Security Audits: Lakukan audit keamanan secara berkala untuk mengidentifikasi dan memperbaiki kerentanan keamanan.
VII. Integrasi dengan Sistem Penjualan Tiket
Setelah modul login dan registrasi terintegrasi, pengguna yang telah login dapat mengakses fitur-fitur utama aplikasi penjualan tiket online, seperti:
- Mencari tiket: Mencari tiket berdasarkan rute, tanggal, dan lain-lain.
- Melihat detail tiket: Melihat detail tiket yang tersedia, termasuk harga dan ketersediaan.
- Membeli tiket: Melakukan proses pembelian tiket, termasuk pembayaran.
- Mengelola pesanan: Melihat riwayat pesanan dan mengelola pesanan yang sedang berlangsung.
VIII. Kesimpulan
Modul login dan registrasi merupakan komponen penting dalam aplikasi penjualan tiket online. Implementasi yang baik dan aman akan memastikan keamanan data pengguna dan kelancaran akses ke fitur-fitur aplikasi. Source code yang diberikan di atas merupakan contoh sederhana dan perlu dikembangkan lebih lanjut sesuai dengan kebutuhan aplikasi. Ingatlah untuk selalu memprioritaskan keamanan aplikasi dan menerapkan praktik-praktik keamanan terbaik untuk melindungi data pengguna. Perlu diingat juga bahwa contoh kode ini hanya sebagai panduan dan perlu disesuaikan dengan kebutuhan dan struktur aplikasi yang lebih kompleks. Perlu ditambahkan fitur-fitur tambahan seperti penanganan error yang lebih baik, validasi data yang lebih komprehensif, dan integrasi dengan sistem pembayaran. Selain itu, pertimbangkan juga untuk menggunakan framework PHP seperti Laravel atau CodeIgniter untuk mempermudah pengembangan dan pemeliharaan aplikasi.





