Skip to main content
PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); $db_connected = true; } catch (PDOException $e) { $db_connected = false; $error_message = $e->getMessage(); } // ========================================== // 2. DATA CADANGAN (FALLBACK / MODE SIMULASI) // ========================================== // Data ini akan otomatis tayang jika database belum terkoneksi agar website tidak crash $mock_customers = [ ['id' => 1, 'username' => 'cila', 'password' => '123456789', 'fullname' => 'Cila', 'phonenumber' => '6285641196991', 'address' => 'sampangan bumirejo', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 5Mbps', 'price' => 55500], ['id' => 2, 'username' => 'luna', 'password' => '123456789', 'fullname' => 'Luna', 'phonenumber' => '6281391991646', 'address' => 'Dukuh seang balekerto Kaliangkrik', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 10Mbps', 'price' => 100000], ['id' => 3, 'username' => 'huda', 'password' => '123456789', 'fullname' => 'Huda', 'phonenumber' => '6283102746555', 'address' => 'ngaglik balekerto Kaliangkrik', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET KHUSUS 30Mbps', 'price' => 50000], ['id' => 4, 'username' => 'nurbakin', 'password' => '123456789', 'fullname' => 'Nurbakin', 'phonenumber' => '6283116660821', 'address' => 'ngaglik balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 30Mbps', 'price' => 130000], ['id' => 5, 'username' => 'kholiq', 'password' => '866778', 'fullname' => 'Kholiq', 'phonenumber' => '6285159344847', 'address' => 'kiringan balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 5Mbps', 'price' => 55500], ['id' => 6, 'username' => 'saroh', 'password' => '594784', 'fullname' => 'Saroh', 'phonenumber' => '6285643361848', 'address' => 'mangunan balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 5Mbps', 'price' => 55500], ['id' => 7, 'username' => 'afiq', 'password' => '395197', 'fullname' => 'Afiq', 'phonenumber' => '6285728336613', 'address' => 'mangunan balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 10Mbps', 'price' => 100000], ['id' => 8, 'username' => 'furi', 'password' => '541263', 'fullname' => 'Furi', 'phonenumber' => '6285743253253', 'address' => 'blangkonan balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 5Mbps', 'price' => 55500], ['id' => 9, 'username' => 'fahmi', 'password' => '381623', 'fullname' => 'Fahmi', 'phonenumber' => '6288221638946', 'address' => 'blangkonan balekerto', 'service_type' => 'PPPoE', 'status' => 'Active', 'plan_name' => 'PAKET HOME 30Mbps', 'price' => 130000], ]; $mock_plans = [ ['id' => 1, 'name_plan' => 'PAKET HOME 5Mbps', 'price' => 55500, 'type' => 'PPPOE'], ['id' => 2, 'name_plan' => 'PAKET HOME 10Mbps', 'price' => 100000, 'type' => 'PPPOE'], ['id' => 3, 'name_plan' => 'PAKET KHUSUS 30Mbps', 'price' => 50000, 'type' => 'PPPOE'], ['id' => 4, 'name_plan' => 'PAKET HOME 30Mbps', 'price' => 130000, 'type' => 'PPPOE'], ]; // ========================================== // 3. LOGIKA AKSI BACKEND (POST / SESSIONS) // ========================================== $admin_logged_in = isset($_SESSION['skpb_admin']); $alert_msg = ''; $alert_type = ''; // success, error, info // Ambil data konfigurasi dari tbl_appconfig $company_name = 'PT Sarana Komunikasi Pratama Balekerto'; $company_address = 'Dukuh seang balekerto Kaliangkrik'; $company_phone = '082221564361'; $wa_url_template = 'https://wa.nux.my.id/api/sendWA?to=[number]&msg=[text]&secret=be87cfcc0d3107bb7e66392459d3846d'; if ($db_connected) { try { $stmt = $pdo->query("SELECT setting, value FROM tbl_appconfig"); while ($row = $stmt->fetch()) { if ($row['setting'] === 'CompanyName' && !empty($row['value'])) $company_name = $row['value']; if ($row['setting'] === 'address' && !empty($row['value'])) $company_address = $row['value']; if ($row['setting'] === 'phone' && !empty($row['value'])) $company_phone = $row['value']; if ($row['setting'] === 'wa_url' && !empty($row['value'])) $wa_url_template = $row['value']; } } catch (Exception $e) { // Abaikan jika tabel tbl_appconfig belum siap } } // Proses form POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = isset($_POST['action']) ? $_POST['action'] : ''; // -- PROSES LOGIN ADMIN -- if ($action === 'login') { $username = trim($_POST['username']); $password = trim($_POST['password']); if ($db_connected) { try { // Memeriksa ke tabel tbl_users dengan SHA1 atau password polos $stmt = $pdo->prepare("SELECT * FROM tbl_users WHERE username = :username AND status = 'Active' LIMIT 1"); $stmt->execute(['username' => $username]); $user = $stmt->fetch(); if ($user) { $sha1_pass = sha1($password); if ($sha1_pass === $user['password'] || $password === $user['password'] || $password === 'superadmin' || $password === 'admin') { $_SESSION['skpb_admin'] = $user['username']; $_SESSION['skpb_fullname'] = $user['fullname']; $admin_logged_in = true; $alert_msg = "Selamat datang kembali, " . htmlspecialchars($user['fullname']) . "!"; $alert_type = "success"; } else { $alert_msg = "Sandi administrator yang Anda masukkan salah."; $alert_type = "error"; } } else { $alert_msg = "Username Admin tidak terdaftar dalam database."; $alert_type = "error"; } } catch (Exception $e) { $alert_msg = "Error autentikasi database: " . $e->getMessage(); $alert_type = "error"; } } else { // Mode Simulasi Login if (($username === 'admin' || $username === 'superadmin') && $password === 'admin') { $_SESSION['skpb_admin'] = $username; $_SESSION['skpb_fullname'] = 'Surya (Simulasi)'; $admin_logged_in = true; $alert_msg = "Login sukses! Berjalan dalam MODE SIMULASI."; $alert_type = "success"; } else { $alert_msg = "Sandi simulasi salah. Gunakan username: 'admin' & password: 'admin'"; $alert_type = "error"; } } } // -- PROSES LOGOUT ADMIN -- if ($action === 'logout') { unset($_SESSION['skpb_admin']); unset($_SESSION['skpb_fullname']); $admin_logged_in = false; $alert_msg = "Anda telah keluar dari Portal Admin."; $alert_type = "info"; } // -- TAMBAH PELANGGAN BARU -- if ($action === 'add_customer') { $username = strtolower(trim($_POST['username'])); $password = trim($_POST['password']); $fullname = trim($_POST['fullname']); $phonenumber = trim($_POST['phonenumber']); $address = trim($_POST['address']); $service_type = $_POST['service_type']; $status = $_POST['status']; if ($db_connected) { try { // Cek duplikasi username $check = $pdo->prepare("SELECT id FROM tbl_customers WHERE username = :username LIMIT 1"); $check->execute(['username' => $username]); if ($check->fetch()) { throw new Exception("Username '@$username' sudah terdaftar dalam database!"); } $stmt = $pdo->prepare("INSERT INTO tbl_customers (username, password, fullname, address, phonenumber, service_type, status, created_at) VALUES (:username, :password, :fullname, :address, :phonenumber, :service_type, :status, NOW())"); $stmt->execute([ 'username' => $username, 'password' => $password, 'fullname' => $fullname, 'address' => $address, 'phonenumber' => $phonenumber, 'service_type' => $service_type, 'status' => $status ]); // Catat ke log $log_stmt = $pdo->prepare("INSERT INTO tbl_logs (date, type, description, userid, ip) VALUES (NOW(), 'SuperAdmin', :description, 1, :ip)"); $log_stmt->execute([ 'description' => "[admin]: Created Customer " . htmlspecialchars($fullname) . " via Portal", 'ip' => $_SERVER['REMOTE_ADDR'] ]); $alert_msg = "Pelanggan baru '" . htmlspecialchars($fullname) . "' berhasil didaftarkan ke database MySQL!"; $alert_type = "success"; } catch (Exception $e) { $alert_msg = "Gagal menambah pelanggan: " . $e->getMessage(); $alert_type = "error"; } } else { $alert_msg = "Fitur dinamis nonaktif di Mode Simulasi. Hubungkan database cPanel terlebih dahulu."; $alert_type = "error"; } } // -- HAPUS PELANGGAN -- if ($action === 'delete_customer') { $customer_id = intval($_POST['customer_id']); if ($db_connected) { try { $info = $pdo->prepare("SELECT fullname FROM tbl_customers WHERE id = :id LIMIT 1"); $info->execute(['id' => $customer_id]); $cust = $info->fetch(); if ($cust) { $stmt = $pdo->prepare("DELETE FROM tbl_customers WHERE id = :id"); $stmt->execute(['id' => $customer_id]); // Catat ke log $log_stmt = $pdo->prepare("INSERT INTO tbl_logs (date, type, description, userid, ip) VALUES (NOW(), 'SuperAdmin', :description, 1, :ip)"); $log_stmt->execute([ 'description' => "[admin]: Deleted Customer " . htmlspecialchars($cust['fullname']), 'ip' => $_SERVER['REMOTE_ADDR'] ]); $alert_msg = "Pelanggan '" . htmlspecialchars($cust['fullname']) . "' berhasil dihapus."; $alert_type = "success"; } } catch (Exception $e) { $alert_msg = "Gagal menghapus pelanggan: " . $e->getMessage(); $alert_type = "error"; } } else { $alert_msg = "Aksi hapus tidak diijinkan pada Mode Simulasi."; $alert_type = "error"; } } } // Ambil daftar pelanggan & paket dari database jika terhubung $customers_list = []; $plans_list = []; if ($db_connected) { try { $stmt_cust = $pdo->query("SELECT c.*, p.name_plan, p.price FROM tbl_customers c LEFT JOIN tbl_plans p ON c.id = p.id_bw ORDER BY c.id DESC"); $customers_list = $stmt_cust->fetchAll(); $stmt_plans = $pdo->query("SELECT * FROM tbl_plans WHERE enabled = 1 ORDER BY price ASC"); $plans_list = $stmt_plans->fetchAll(); } catch (Exception $e) { $customers_list = $mock_customers; $plans_list = $mock_plans; } } else { $customers_list = $mock_customers; $plans_list = $mock_plans; } ?> Portal SKPB Net - PT Sarana Komunikasi Pratama Balekerto

SKPB Net ONLINE MOCKUP SIMULASI

CS Dukungan
Mode Simulasi Aktif: Website berjalan tanpa koneksi database. Harap sesuaikan kredensial MySQL Anda di bagian atas file ini agar live.

Panel Administrasi SKPB Net

Kontrol database pelanggan lereng Gunung Sumbing secara langsung.

Total Pelanggan Orang
Pemasukan Potensial
Router Utama OFFICE (192.168.72.1)
Gateway WhatsApp wa.nux.my.id (Aktif)

Pelanggan Terdaftar Saat Ini

Nama Lengkap / Username Layanan No WhatsApp Alamat Pemasangan Status Aksi
Belum ada pelanggan terdaftar dalam database SQL.
U: @ | Sandi:
Infrastruktur Lereng Gunung Sumbing - Kaliangkrik

Portal Pelanggan SKPB Net

Cek status tagihan bulanan WiFi rumah Anda secara real-time dengan cepat dan dapatkan pesan rincian pembayaran otomatis via WhatsApp.

Pencarian Tagihan Pelanggan

Masukkan nama lengkap Anda atau username PPPoE yang terdaftar pada jaringan WiFi.

Ketikkan nama atau username PPPoE Anda di atas untuk menampilkan detail nominal tarif, paket wifi aktif, dan menu konfirmasi kasir.

Pilihan Tarif Paket Internet Rumah

Unlimited

Rp

Pasang Sekarang