Tổng Tên Miền
Đang Hoạt Động
Đang Chờ Duyệt
Tổng Đã Chi Tiêu
0đKhông tìm thấy lịch sử đăng ký tên miền nào phù hợp.
/** * Lịch Sử Đăng Ký & Quản Lý Tên Miền v2.7.1 (Bản Mở Rộng Nâng Cao) * Tác giả / Phát triển: Trần Duy Dev Lor */ error_reporting(E_ALL); ini_set('display_errors', 1); session_start(); if (file_exists('config.php')) { require_once 'config.php'; } elseif (file_exists('../config.php')) { require_once '../config.php'; } $page_title = "Lịch Sử Đăng Ký & Quản Lý Tên Miền v2.7.1"; $user_id = $_SESSION['user_id'] ?? null; $user_info = null; if (!$user_id) { header("Location: login.php"); exit; } $success_msg = ''; $error_msg = ''; if (isset($pdo) && $pdo instanceof PDO) { try { $stmtUser = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 1"); $stmtUser->execute([$user_id]); $user_info = $stmtUser->fetch(PDO::FETCH_ASSOC); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = trim($_POST['action'] ?? ''); $domain_id = intval($_POST['domain_id'] ?? 0); if ($action === 'register_domain') { $domain_name = strtolower(trim($_POST['domain_name'] ?? '')); $years = intval($_POST['years'] ?? 1); if ($years < 1) $years = 1; // Tách lấy đuôi tên miền (ví dụ: .site, .click, .com,...) để tính giá hoặc để mặc định $ext = substr(strrchr($domain_name, "."), 1); // Giá mặc định mỗi năm cho đơn hàng mới (bro có thể điều chỉnh tùy ý) $price_per_year = 50000; $total_price = $price_per_year * $years; if (!empty($domain_name) && filter_var($domain_name, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME)) { // Kiểm tra xem user có đủ tiền không (giả sử bảng users có cột money) $current_money = floatval($user_info['money'] ?? 0); if ($current_money >= $total_price) { $pdo->beginTransaction(); // Trừ tiền trong ví $upWallet = $pdo->prepare("UPDATE users SET money = money - ? WHERE id = ?"); $upWallet->execute([$total_price, $user_id]); // Thêm vào bảng domains với trạng thái mặc định là 'pending' (chờ duyệt) $insDomain = $pdo->prepare("INSERT INTO domains (user_id, domain_name, price, status, dns_1, dns_2, created_at) VALUES (?, ?, ?, 'pending', 'ns1.default.com', 'ns2.default.com', NOW())"); $insDomain->execute([$user_id, $domain_name, $total_price]); $pdo->commit(); $success_msg = "Đăng ký tên miền " . htmlspecialchars($domain_name) . " thành công! Trạng thái hiện tại là Chờ duyệt từ Admin."; // Cập nhật lại thông tin user sau khi trừ tiền $stmtUser->execute([$user_id]); $user_info = $stmtUser->fetch(PDO::FETCH_ASSOC); } else { $error_msg = "Số dư trong ví của bạn không đủ để đăng ký tên miền này!"; } } else { $error_msg = "Tên miền không hợp lệ, vui lòng kiểm tra lại!"; } } elseif ($action === 'update_dns' && $domain_id > 0) { $dns_1 = trim($_POST['dns_1'] ?? ''); $dns_2 = trim($_POST['dns_2'] ?? ''); $checkOwner = $pdo->prepare("SELECT * FROM domains WHERE id = ? AND user_id = ? LIMIT 1"); $checkOwner->execute([$domain_id, $user_id]); $domainData = $checkOwner->fetch(PDO::FETCH_ASSOC); if ($domainData) { $upDns = $pdo->prepare("UPDATE domains SET dns_1 = ?, dns_2 = ? WHERE id = ?"); $upDns->execute([$dns_1, $dns_2, $domain_id]); $success_msg = "Cập nhật Nameserver cho tên miền " . htmlspecialchars($domainData['domain_name']) . " thành công!"; } else { $error_msg = "Không tìm thấy tên miền hoặc bạn không có quyền chỉnh sửa!"; } } elseif ($action === 'cancel_order' && $domain_id > 0) { $checkOwner = $pdo->prepare("SELECT * FROM domains WHERE id = ? AND user_id = ? AND status = 'pending' LIMIT 1"); $checkOwner->execute([$domain_id, $user_id]); $domainData = $checkOwner->fetch(PDO::FETCH_ASSOC); if ($domainData) { $pdo->beginTransaction(); $upStatus = $pdo->prepare("UPDATE domains SET status = 'cancelled' WHERE id = ?"); $upStatus->execute([$domain_id]); $refundMoney = floatval($domainData['price']); $upWallet = $pdo->prepare("UPDATE users SET money = money + ? WHERE id = ?"); $upWallet->execute([$refundMoney, $user_id]); $pdo->commit(); $success_msg = "Đã hủy đơn hàng tên miền " . htmlspecialchars($domainData['domain_name']) . " và hoàn lại " . number_format($refundMoney, 0, ',', '.') . "đ vào ví!"; $stmtUser = $pdo->prepare("SELECT * FROM users WHERE id = ? LIMIT 1"); $stmtUser->execute([$user_id]); $user_info = $stmtUser->fetch(PDO::FETCH_ASSOC); } else { $error_msg = "Đơn hàng không tồn tại, đã được duyệt hoặc không thể hủy!"; } } } $search_keyword = trim($_GET['s'] ?? ''); $status_filter = trim($_GET['status'] ?? ''); $query_str = "SELECT * FROM domains WHERE user_id = ?"; $params = [$user_id]; if (!empty($search_keyword)) { $query_str .= " AND domain_name LIKE ?"; $params[] = "%" . $search_keyword . "%"; } if (!empty($status_filter)) { $query_str .= " AND status = ?"; $params[] = $status_filter; } $query_str .= " ORDER BY id DESC"; $stmtDomains = $pdo->prepare($query_str); $stmtDomains->execute($params); $domains_list = $stmtDomains->fetchAll(PDO::FETCH_ASSOC); $stat_total = count($domains_list); $stat_pending = 0; $stat_active = 0; $stat_cancelled = 0; $total_spent = 0; foreach ($domains_list as $d) { if ($d['status'] === 'pending') $stat_pending++; if ($d['status'] === 'active') { $stat_active++; $total_spent += floatval($d['price']); } if ($d['status'] === 'cancelled') $stat_cancelled++; } } catch (Exception $e) { $domains_list = []; $error_msg = "Lỗi cơ sở dữ liệu: " . $e->getMessage(); } } else { $domains_list = []; $error_msg = "Hệ thống chưa kết nối được Cơ sở dữ liệu (PDO). Vui lòng kiểm tra file config.php!"; } ?>
Không tìm thấy lịch sử đăng ký tên miền nào phù hợp.