Halaman login sederhana yang menggunakan PHP Native (tanpa framework) dan Bootstrap sebagai tampilannya.
Proyek ini menggunakan Docker untuk menyediakan lingkungan pengembangan yang konsisten (PHP + Apache + Database).
Persyaratan
Pastikan Anda telah menginstal:
- Docker
- Docker Compose
Cara Menjalankan
-
Kloning Repositori:
https://github.com/kkhff/Auth_page.git cd auth_page -
Siapkan Konfigurasi Lingkungan: Salin file template lingkungan dan sesuaikan nilainya:
cp .env.example .env
Penting: Edit file .env dan ganti variabel DB_PASSWORD, DB_DATABASE, dan DB_USERNAME dengan kredensial yang Anda inginkan.
-
Bangun dan Jalankan Kontainer: Perintah ini akan membangun image dan menjalankan layanan PHP/Apache serta database (MySQL/MariaDB) di latar belakang.
docker-compose up -d --build
-
Akses Aplikasi: Aplikasi akan tersedia di browser Anda: Ganti dengan alamat yang benar, misalnya:
http://localhost:8080(untuk tampilan web) danhttp://localhost:8081(untuk phpmyadmin)
Proyek ini membutuhkan database untuk menyimpan data pengguna.
-
Kredensial Database
Pastikan file .env telah diatur dengan benar:
DB_HOST=auth-db DB_ROOT_PASS=[Root Password Anda] DB_USER=[Username Anda] DB_PASS=[Password Anda] DB_NAME=[Nama Database Anda]
-
Skema Tabel
Proyek ini dirancang untuk membuat tabel
userssecara otomatis saat aplikasi pertama kali dijalankan, berdasarkan skema yang didefinisikan dalamapp/config/database.php.Namun, untuk referensi manual, atau jika Anda ingin mengimpor tabel secara langsung, berikut adalah skema SQL yang digunakan:
CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(225) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Detail kolom Kunci
Kolom Tipe Data Keterangan idINT UNSIGNEDKunci utama dan auto-increment. usernameVARCHAR(50)Nama pengguna unik untuk login. emailVARCHAR(100)Alamat email unik. passwordVARCHAR(225)Wajib: Hash kata sandi (hash panjang diperlukan untuk keamanan, misal menggunakan password_hash). created_atTIMESTAMPWaktu pendaftaran.
| File/Direktori | Peran Utama | Deskripsi |
|---|---|---|
public/index.php |
Titik Masuk (Front Controller) | File utama yang menerima semua permintaan (request). Tugasnya adalah memuat konfigurasi (database.php) dan mengarahkan permintaan ke controller yang sesuai. |
app/config/database.php |
Konfigurasi & Koneksi DB | Berisi kredensial database (dari .env) dan logika untuk membuat atau membangun koneksi ke database. Juga berisi skema otomatisasi tabel users. |
app/models/userModel.php |
Interaksi Database (Model) | Kelas atau fungsi yang khusus menangani data. Tugasnya meliputi: Mencari pengguna, menyimpan pengguna baru (setelah hashing), dan mengambil data pengguna. |
app/controllers/authController.php |
Logika Bisnis (Autentikasi) | Menangani semua logika login, register, dan logout. Termasuk menerima data formulir, memverifikasi kredensial, dan mengelola status sesi ($_SESSION). |
views/auth/auth.php |
Tampilan Otentikasi | Berisi markup HTML untuk formulir Login dan Registrasi. |
views/dashboard/dashboard.php |
Tampilan Halaman Utama | Berisi markup HTML dari halaman yang ditampilkan setelah login berhasil. Halaman ini harus selalu diawali dengan pemeriksaan sesi. |
views/layout/header.php & footer.php |
Komponen Layout | Berisi elemen UI yang berulang di setiap halaman, seperti navigation bar atau <head> HTML, untuk konsistensi tampilan. |
Karena adanya perubahan pada kredensial default database, jika Anda sebelumnya pernah menjalankan proyek ini, Anda MUNGKIN perlu menghapus volume database lokal Anda untuk menghindari error Access Denied atau Connection refused.
Hapus Volume Data (Lakukan ini jika Anda mendapatkan error koneksi):
-
Hentikan dan Hapus Container yang Berjalan
Pastikan semua container yang terkait dengan proyek ini dihentikan dan dihapus, termasuk volume-nya:
docker-compose down -v
-
Jalankan Ulang Proyek
Setelah volume dihapus, jalankan ulang proyek. MySQL akan memulai dari awal dan menggunakan variabel
$DB_USER(misalnya,sayadmin) dan$DB_PASS(misalnya,onlyuser) dari file.envAnda untuk inisialisasi.docker-compose up --build -d