/home/ejrndhmu/tokobiolink.com/register.php
<?php
session_start();
require_once 'includes/config.php';
require_once 'includes/functions.php';
$success = '';
$error = '';
// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$full_name = trim($_POST['full_name'] ?? '');
$email = trim($_POST['email'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$password = trim($_POST['password'] ?? '');
$confirm_password = trim($_POST['confirm_password'] ?? '');
// Validasi input
if (empty($full_name) || empty($email) || empty($phone) || empty($password)) {
$error = 'Semua field harus diisi.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = 'Format email tidak valid.';
} elseif (strlen($password) < 6) {
$error = 'Password minimal 6 karakter.';
} elseif ($password !== $confirm_password) {
$error = 'Konfirmasi password tidak cocok.';
} else {
// Cek apakah email sudah ada
if (getUserByEmail($email)) {
$error = 'Email sudah terdaftar.';
} else {
// Generate username dari email
$username = explode('@', $email)[0];
$originalUsername = $username;
$counter = 1;
// Pastikan username unik
while (getUserByUsername($username)) {
$username = $originalUsername . $counter;
$counter++;
}
// Buat user baru dengan status tidak aktif
$result = createUser($username, $email, $password, $full_name, 'user', null, $phone, null);
if ($result) {
// Set user status to inactive
$db = new Database();
$db->query('UPDATE users SET status = "inactive" WHERE id = :id');
$db->bind(':id', $result);
$db->execute();
$success = 'Pendaftaran berhasil! Akun Anda telah dibuat dengan status tidak aktif. Admin akan mengaktifkan akun setelah verifikasi.';
// Clear form
$_POST = [];
} else {
$error = 'Username atau email sudah digunakan.';
}
}
}
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pendaftaran - Aplikasi Vendor</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<style>
body {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
display: flex;
align-items: center;
}
.register-card {
background: white;
border-radius: 15px;
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
overflow: hidden;
}
.register-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 2rem;
text-align: center;
}
.form-control {
border-radius: 10px;
border: 2px solid #e9ecef;
padding: 12px 15px;
transition: all 0.3s ease;
}
.form-control:focus {
border-color: #667eea;
box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25);
}
.btn-register {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: none;
border-radius: 10px;
padding: 12px 30px;
font-weight: 600;
transition: all 0.3s ease;
}
.btn-register:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
}
.login-link {
color: #667eea;
text-decoration: none;
font-weight: 600;
}
.login-link:hover {
color: #764ba2;
}
</style>
</head>
<body>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-6 col-lg-5">
<div class="register-card">
<div class="register-header">
<h2 class="mb-0">
<i class="fas fa-user-plus me-2"></i>
Daftar Akun
</h2>
<p class="mb-0 mt-2 opacity-75">Buat akun baru untuk mengakses layanan kami</p>
</div>
<div class="p-4">
<?php if ($success): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
<i class="fas fa-check-circle me-2"></i><?= htmlspecialchars($success) ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<?php if ($error): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<i class="fas fa-exclamation-circle me-2"></i><?= htmlspecialchars($error) ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<form method="POST" class="needs-validation" novalidate>
<div class="mb-3">
<label for="full_name" class="form-label">
<i class="fas fa-user me-1"></i>Nama Lengkap
</label>
<input type="text" class="form-control" id="full_name" name="full_name"
value="<?= htmlspecialchars($_POST['full_name'] ?? '') ?>" required>
<div class="invalid-feedback">
Nama lengkap harus diisi.
</div>
</div>
<div class="mb-3">
<label for="email" class="form-label">
<i class="fas fa-envelope me-1"></i>Email
</label>
<input type="email" class="form-control" id="email" name="email"
value="<?= htmlspecialchars($_POST['email'] ?? '') ?>" required>
<div class="invalid-feedback">
Email harus diisi dengan format yang valid.
</div>
<div class="form-text">
<i class="fas fa-info-circle me-1"></i>Username akan dibuat otomatis dari email
</div>
</div>
<div class="mb-3">
<label for="phone" class="form-label">
<i class="fas fa-phone me-1"></i>Nomor HP
</label>
<input type="tel" class="form-control" id="phone" name="phone"
value="<?= htmlspecialchars($_POST['phone'] ?? '') ?>" required>
<div class="invalid-feedback">
Nomor HP harus diisi.
</div>
<div class="form-text">
<i class="fas fa-info-circle me-1"></i>Format: 628xxxxxxxxx
</div>
</div>
<div class="mb-3">
<label for="password" class="form-label">
<i class="fas fa-lock me-1"></i>Password
</label>
<input type="password" class="form-control" id="password" name="password" required>
<div class="invalid-feedback">
Password minimal 6 karakter.
</div>
</div>
<div class="mb-4">
<label for="confirm_password" class="form-label">
<i class="fas fa-lock me-1"></i>Konfirmasi Password
</label>
<input type="password" class="form-control" id="confirm_password" name="confirm_password" required>
<div class="invalid-feedback">
Konfirmasi password harus sama dengan password.
</div>
</div>
<div class="alert alert-info" role="alert">
<i class="fas fa-info-circle me-2"></i>
<strong>Informasi:</strong> Setelah pendaftaran, akun Anda akan dalam status tidak aktif. Admin akan mengaktifkan akun setelah verifikasi.
</div>
<button type="submit" class="btn btn-register text-white w-100 mb-3">
<i class="fas fa-user-plus me-2"></i>Daftar Sekarang
</button>
</form>
<div class="text-center">
<p class="mb-0">Sudah punya akun?
<a href="login.php" class="login-link">
<i class="fas fa-sign-in-alt me-1"></i>Login di sini
</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Bootstrap form validation
(function() {
'use strict';
window.addEventListener('load', function() {
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
// Password confirmation validation
document.getElementById('confirm_password').addEventListener('input', function() {
var password = document.getElementById('password').value;
var confirmPassword = this.value;
if (password !== confirmPassword) {
this.setCustomValidity('Password tidak cocok');
} else {
this.setCustomValidity('');
}
});
// Phone number formatting
document.getElementById('phone').addEventListener('input', function() {
let value = this.value.replace(/\D/g, ''); // Remove non-digits
// Add 62 prefix if starts with 0
if (value.startsWith('0')) {
value = '62' + value.substring(1);
}
this.value = value;
});
</script>
</body>
</html>