WALET PUTI COMMUNITY PRO — VERSI AMAN (HARDENED)
================================================
PHP + MySQL untuk XAMPP.

INSTALASI HOSTING:
1. Buat database MySQL dan user database dari panel hosting, lalu berikan
   hak akses user tersebut ke database.
2. Upload file proyek ke document root atau subfolder domain, lalu import
   db.sql ke database yang baru dibuat. Jangan impor ulang ke database berisi
   data penting: db.sql menghapus tabel yang namanya sama.
3. Atur environment DB_HOST, DB_NAME, DB_USER, dan DB_PASS melalui panel
   hosting. Jika panel tidak menyediakan environment variable, isi nilai
   tersebut di bagian konfigurasi config.php.
4. Atur BASE_URL ke path aplikasi, misalnya / untuk document root atau
   /nama-folder jika aplikasi berada di subfolder. Atur APP_URL ke URL publik
   lengkap, misalnya https://domainanda.com atau
   https://domainanda.com/nama-folder.
5. Pastikan folder uploads dan subfoldernya dapat ditulis oleh PHP. Jalankan
   install.php sekali, lalu hapus file tersebut dan login menggunakan akun
   admin di bawah.
6. Aktifkan HTTPS. File .htaccess memerlukan Apache 2.4 atau server yang
   kompatibel; pada Nginx, aturan perlindungan file harus dibuat di konfigurasi
   server karena Nginx tidak membaca .htaccess.
7. Gunakan PHP 8.1 atau lebih baru dan aktifkan ekstensi PDO MySQL, Fileinfo,
   serta OpenSSL. Jalankan `composer install --no-dev` bila fitur email SMTP
   akan digunakan.

PERBAIKAN KEAMANAN DI VERSI INI:
- Cookie session: HttpOnly + SameSite=Lax (+ Secure otomatis di HTTPS)
- Header keamanan: X-Frame-Options, nosniff, Referrer-Policy, CSP
- Rate limit login: maks 5x percobaan / 15 menit (anti brute-force)
- .htaccess root: blokir akses ke config.php, db.sql, file .sql/.md/.log
- uploads/.htaccess: akses langsung ke ekstensi file executable ditolak
- Password admin diganti (bukan "password" lagi) — lihat bawah
- CSRF protection, prepared statements, validasi upload (tetap dipertahankan)

INSTALASI XAMPP:
1. Ekstrak folder ke C:\xampp\htdocs\walet_puti_community\
2. Jalankan Apache dan MySQL.
3. Buka http://localhost/phpmyadmin -> Import file db.sql.
4. Buka SEKALI: http://localhost/walet_puti_community/install.php
   (memastikan akun admin ada dengan password hash terbaru)
5. HAPUS install.php setelah langkah 4.
6. Login di http://localhost/walet_puti_community/

PEMULIHAN PASSWORD:
- Untuk database yang sudah ada, import password_reset.sql lewat phpMyAdmin.
- Pengiriman online memakai SMTP melalui PHPMailer. Jalankan `composer install`
   di folder proyek setelah Composer tersedia.
- Atur environment aplikasi: APP_URL ke URL publik HTTPS; MAIL_FROM_EMAIL ke
   alamat pengirim yang sudah diverifikasi; SMTP_HOST, SMTP_PORT, SMTP_USER,
   SMTP_PASS, dan SMTP_SECURE (`tls` untuk port 587 atau `ssl` untuk port 465).
- Jangan simpan password SMTP di repository. Atur variabel ini melalui panel
   hosting atau konfigurasi environment server.
- Untuk Gmail, gunakan smtp.gmail.com, port 587, keamanan tls, alamat Gmail
   sebagai SMTP_USER, dan App Password sebagai SMTP_PASS (bukan password akun).
- Jika SMTP_HOST kosong, aplikasi tetap mencoba PHP mail() untuk penggunaan
   lokal. APP_URL default localhost tidak dapat dipakai untuk email di situs live.
   File ini hanya membuat tabel token dan tidak menghapus data.
- Jika SMTP_HOST tidak diisi, reset password memakai PHP mail(). Di XAMPP,
  konfigurasi SMTP pada php.ini/sendmail.ini terlebih dahulu.
- Atur APP_URL ke alamat situs dan MAIL_FROM_EMAIL ke alamat pengirim yang
   diizinkan oleh penyedia email. Default lokal: http://localhost/walet_puti_community
   dan noreply@localhost.

PESAN ANTAR ANGGOTA:
- Buka menu Pesan, pilih akun anggota, lalu kirim teks, gambar (maksimal 5 MB),
   emoji dari keyboard ponsel, atau stiker emoji.
- Percakapan privat hanya dapat dibaca oleh dua akun yang terlibat.
- Tema wallpaper chat disimpan per akun dan berlaku untuk chat admin maupun pesan privat.
- Pengguna dapat memilih enam preset atau foto JPG/PNG/WEBP sendiri (maksimal 20 MB).
- Tabel pesan dibuat otomatis untuk database lama; skema instalasi baru tersedia
   di db.sql.

AKUN ADMIN (langsung bisa dipakai setelah import db.sql):
   Username: admin
   Password: WaletPuti#2026

CATATAN:
- Jika nama folder berbeda, ubah BASE_URL di config.php.
- install.php bisa dipakai lagi kapan pun untuk RESET password admin
  (ganti konstanta ADMIN_PASSWORD di dalam file itu, jalankan, hapus lagi).
- Untuk produksi/hosting: atur DB_HOST/DB_NAME/DB_USER/DB_PASS, BASE_URL, dan
   APP_URL. Gunakan HTTPS agar cookie Secure aktif.
