Daftar Isi
- Pendahuluan
- Struktur Folder dan File
- Persiapan Database MySQL
- Membuat File
config.phpuntuk Koneksi - Membuat Form HTML di
register.php - Menangani Input dengan PHP
- Validasi dan Simpan ke Database
- Penjelasan Kode Baris per Baris
- Penutup dan Pengembangan Lanjutan
1. Pendahuluan
Salah satu fitur dasar dari aplikasi web adalah sistem registrasi pengguna, yang memungkinkan pengguna membuat akun. Fitur ini digunakan di berbagai aplikasi seperti e-commerce, sistem sekolah, e-learning, dan lain-lain.
Tutorial ini menggunakan:
- PHP: sebagai bahasa server
- MySQL: sebagai database
- Laragon/XAMPP: sebagai server lokal
2. Struktur Folder dan File
Buat folder belajar_register di dalam direktori Laragon/XAMPP kamu (www), lalu siapkan struktur file berikut:
belajar_register/
├── config.php
└── register.php

3. Persiapan Database MySQL
A. Buka phpMyAdmin:
Akses di browser:
http://localhost/phpmyadmin

B. Buat database:
C. Buat tabel user:

4. Membuat File config.php untuk Koneksi

Kode Lengkap config.php
<?php
$host = "localhost";
$dbname = "db_register";
$username = "root";
$password = "";
// Koneksi ke MySQL dengan PDO
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Koneksi gagal: " . $e->getMessage());
}
?>
5. Membuat Form HTML di register.php

Kode Lengkap Tampilan register.php
<?php
require_once 'config.php';
$errors = [];
$success = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = trim($_POST["username"]);
$email = trim($_POST["email"]);
$password = trim($_POST["password"]);
if (empty($username) || empty($email) || empty($password)) {
$errors[] = "Semua field wajib diisi!";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Format email tidak valid!";
} else {
$stmt = $pdo->prepare("SELECT id FROM users WHERE email = ?");
$stmt->execute([$email]);
if ($stmt->rowCount() > 0) {
$errors[] = "Email sudah digunakan!";
}
}
if (empty($errors)) {
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->execute([$username, $email, $hash]);
$success = "Registrasi berhasil! Silakan login.";
}
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Form Registrasi</title>
<style>
body {
font-family: 'Segoe UI', sans-serif;
background-color: #f3f4f6;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.register-container {
background-color: #fff;
padding: 30px 40px;
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
width: 100%;
max-width: 400px;
}
h2 {
text-align: center;
margin-bottom: 20px;
color: #374151;
}
input[type="text"],
input[type="email"],
input[type="password"] {
width: 100%;
padding: 10px 12px;
margin-bottom: 15px;
border: 1px solid #d1d5db;
border-radius: 6px;
transition: border 0.3s;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus {
border-color: #3b82f6;
outline: none;
}
input[type="submit"] {
background-color: #3b82f6;
color: white;
border: none;
padding: 12px;
width: 100%;
border-radius: 6px;
font-weight: bold;
cursor: pointer;
}
input[type="submit"]:hover {
background-color: #2563eb;
}
.error {
background-color: #fee2e2;
color: #b91c1c;
padding: 10px;
margin-bottom: 10px;
border-radius: 6px;
font-size: 0.9em;
}
.success {
background-color: #d1fae5;
color: #065f46;
padding: 10px;
margin-bottom: 10px;
border-radius: 6px;
font-size: 0.9em;
}
</style>
</head>
<body>
<div class="register-container">
<h2>Registrasi Akun</h2>
<?php
foreach ($errors as $e) {
echo "<div class='error'>$e</div>";
}
if ($success) {
echo "<div class='success'>$success</div>";
}
?>
<form method="POST" action="">
<input type="text" name="username" placeholder="Nama pengguna" required>
<input type="email" name="email" placeholder="Email aktif" required>
<input type="password" name="password" placeholder="Password" required>
<input type="submit" value="Daftar">
</form>
</div>
</body>
</html>
6. Penjelasan Kode
Baris Penting:
require_once 'config.php';→ Menghubungkan ke database$_SERVER["REQUEST_METHOD"] == "POST"→ Mengecek jika form dikirimpassword_hash()→ Mengamankan passwordprepare()→ Melindungi dari SQL injection
Validasi:
- Kosong → ditolak
- Email salah → ditolak
- Email sudah ada → ditolak
7. Uji Coba
Akses:

Uji:
- Daftar user dengan email baru → sukses
- Daftar dengan email sama → gagal
- Kosongkan form → gagal

8. Keamanan Dasar
- Gunakan
password_hash()danpassword_verify()untuk login - Jangan tampilkan error MySQL di produksi
- Validasi input lebih detail (panjang username, kekuatan password, dll.)
9. Pengembangan Selanjutnya
Setelah berhasil membuat register.php, kamu bisa melanjutkan dengan:
login.php→ autentikasi penggunalogout.php→ keluar dari sistem- Session → menjaga sesi login
- Halaman dashboard → hanya bisa diakses setelah login
- Verifikasi email (opsional)
Kesimpulan
Kamu baru saja membuat sistem register.php dari nol menggunakan PHP dan MySQL. Dengan pendekatan ini, kamu memahami:
- Cara menghubungkan PHP ke database
- Form dan validasi user input
- Menyimpan data dengan aman menggunakan
password_hash
Artikel ini bisa digunakan untuk:
- Modul praktikum kuliah
- Project tugas sekolah
- Pondasi membangun website real