set_charset("utf8mb4"); $db_connected = !$mysqli->connect_error; // رمز عبور پیش‌فرض پنل مدیریت (قابل تغییر از داخل سورس یا تنظیمات) define('ADMIN_PASSWORD', 'admin1234'); // مدیریت ورود / خروج ادمین if (isset($_POST['action']) && $_POST['action'] === 'do_login') { header('Content-Type: application/json; charset=utf-8'); $pass = $_POST['password'] ?? ''; if ($pass === ADMIN_PASSWORD) { $_SESSION['admin_auth'] = true; echo json_encode(['ok' => true]); } else { echo json_encode(['ok' => false, 'error' => 'رمز عبور وارد شده اشتباه است.']); } exit; } if (isset($_GET['logout'])) { unset($_SESSION['admin_auth']); header('Location: index.php'); exit; } $is_logged_in = isset($_SESSION['admin_auth']) && $_SESSION['admin_auth'] === true; // ----------------- بخش پردازش درخواست‌های دیتابیس (API Endpoints) ----------------- if ($is_logged_in && isset($_GET['api'])) { header('Content-Type: application/json; charset=utf-8'); if (!$db_connected) { echo json_encode(['ok' => false, 'error' => 'خطای اتصال به دیتابیس: ' . $mysqli->connect_error]); exit; } $api = $_GET['api']; // ۱. استعلام آمار داشبورد if ($api === 'stats') { $stats = [ 'total_users' => 0, 'total_balance' => 0, 'stock_ready' => 0, 'net_profit' => 0, 'pending_payouts' => 0, 'pending_deposits' => 0 ]; // تعداد و موجودی کاربران $r1 = $mysqli->query("SELECT COUNT(*) AS c, IFNULL(SUM(balance), 0) AS b FROM shop_users"); if ($r1 && $row = $r1->fetch_assoc()) { $stats['total_users'] = (int)$row['c']; $stats['total_balance'] = (int)$row['b']; } // اکانت‌های آماده انبار $r2 = $mysqli->query("SELECT COUNT(*) AS c FROM accounts WHERE status = 'available'"); if ($r2 && $row = $r2->fetch_assoc()) { $stats['stock_ready'] = (int)$row['c']; } // سود خالص $r3 = $mysqli->query("SELECT IFNULL(SUM(price - buy_price), 0) AS p FROM shop_orders WHERE status = 'completed'"); if ($r3 && $row = $r3->fetch_assoc()) { $stats['net_profit'] = (int)$row['p']; } // درخواست‌های تسویه معلق $r4 = $mysqli->query("SELECT COUNT(*) AS c FROM shop_payouts WHERE status = 'pending'"); if ($r4 && $row = $r4->fetch_assoc()) { $stats['pending_payouts'] = (int)$row['c']; } // فیش‌های شارژ معلق $r5 = $mysqli->query("SELECT COUNT(*) AS c FROM shop_deposits WHERE status = 'pending'"); if ($r5 && $row = $r5->fetch_assoc()) { $stats['pending_deposits'] = (int)$row['c']; } echo json_encode(['ok' => true, 'data' => $stats]); exit; } // ۲. دریافت انبار اکانت‌ها if ($api === 'inventory') { $list = []; $res = $mysqli->query("SELECT id, phone_number, country_code, buy_cost, two_factor_pass, is_spammed, status, created_at FROM accounts WHERE status = 'available' ORDER BY id DESC LIMIT 100"); if ($res) { while ($row = $res->fetch_assoc()) { $list[] = $row; } } echo json_encode(['ok' => true, 'data' => $list]); exit; } // ۳. حذف یک خط از انبار if ($api === 'delete_account' && $_SERVER['REQUEST_METHOD'] === 'POST') { $id = (int)($_POST['id'] ?? 0); if ($id > 0) { $mysqli->query("DELETE FROM accounts WHERE id = $id"); echo json_encode(['ok' => true]); } else { echo json_encode(['ok' => false, 'error' => 'شناسه نامعتبر است.']); } exit; } // ۴. دریافت تنظیمات if ($api === 'get_settings') { $settings = []; $res = $mysqli->query("SELECT key_name, value_text FROM shop_settings"); if ($res) { while ($row = $res->fetch_assoc()) { $settings[$row['key_name']] = $row['value_text']; } } echo json_encode(['ok' => true, 'data' => $settings]); exit; } // ۵. ذخیره تنظیمات if ($api === 'save_settings' && $_SERVER['REQUEST_METHOD'] === 'POST') { $data = json_decode(file_get_contents('php://input'), true); if (is_array($data)) { foreach ($data as $key => $val) { $k = $mysqli->real_escape_string($key); $v = $mysqli->real_escape_string($val); $mysqli->query("INSERT INTO shop_settings (key_name, value_text) VALUES ('$k', '$v') ON DUPLICATE KEY UPDATE value_text = '$v'"); } echo json_encode(['ok' => true]); } else { echo json_encode(['ok' => false]); } exit; } // ۶. دریافت کشورها if ($api === 'countries') { $countries = []; $res = $mysqli->query("SELECT * FROM shop_countries ORDER BY id DESC"); if ($res) { while ($row = $res->fetch_assoc()) { $countries[] = $row; } } echo json_encode(['ok' => true, 'data' => $countries]); exit; } // ۷. استعلام کاربر if ($api === 'search_user') { $uid = (int)($_GET['user_id'] ?? 0); $res = $mysqli->query("SELECT * FROM shop_users WHERE user_id = $uid LIMIT 1"); if ($res && $user = $res->fetch_assoc()) { echo json_encode(['ok' => true, 'data' => $user]); } else { echo json_encode(['ok' => false, 'error' => 'کاربری با این شناسه یافت نشد.']); } exit; } // ۸. تغییر موجودی کاربر if ($api === 'edit_balance' && $_SERVER['REQUEST_METHOD'] === 'POST') { $uid = (int)($_POST['user_id'] ?? 0); $amount = (int)($_POST['amount'] ?? 0); $action = $_POST['action_type'] ?? 'add'; if ($uid > 0 && $amount > 0) { if ($action === 'add') { $mysqli->query("UPDATE shop_users SET balance = balance + $amount WHERE user_id = $uid"); } else { $mysqli->query("UPDATE shop_users SET balance = GREATEST(0, balance - $amount) WHERE user_id = $uid"); } echo json_encode(['ok' => true]); } else { echo json_encode(['ok' => false, 'error' => 'پارامترهای ارسالی نامعتبر است.']); } exit; } echo json_encode(['ok' => false, 'error' => 'دستور نامعتبر']); exit; } ?> پنل مدیریت سون نامبر

ورود به پنل مدیریت سون نامبر

اتصال مستقیم به دیتابیس MySQL: متصل' : 'خطا در اتصال'; ?>

رمز عبور پیش‌فرض: admin1234

پنل مدیریت زنده پایگاه داده

سود خالص کل سفارشات

در حال دریافت...

اکانت‌های آماده تحویل در انبار

در حال دریافت...

درخواست‌های تسویه معلق

در حال دریافت...

کل کاربران ثبت‌شده

در حال دریافت...