$timeout)) { // Last request was more than 30 minutes ago session_unset(); // Unset $_SESSION variable session_destroy(); // Destroy session data header("Location: /?page=login"); // Redirect to login page exit; } $_SESSION['last_activity'] = time(); // Update last activity time // Check if user IP or user agent has changed if ((isset($_SESSION['user_ip']) && $_SESSION['user_ip'] !== $_SERVER['REMOTE_ADDR']) || (isset($_SESSION['user_agent']) && $_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT'])) { session_unset(); session_destroy(); header("Location: /?page=login"); exit; } // Redirect to login if not logged in if (!isset($_SESSION['username'])) { header("Location: /?page=login"); exit; } // Function to get user ID function getUserId($username, $pdo) { $stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?"); $stmt->execute([$username]); return $stmt->fetchColumn(); } // Function to get user's domains function getUserDomains($userId, $pdo) { $stmt = $pdo->prepare("SELECT id, domain_name, ip_address FROM domains WHERE user_id = ?"); // Fetching ip_address $stmt->execute([$userId]); return $stmt->fetchAll(); } // Function to remove a domain function removeDomain($domainId, $userId, $pdo) { // First, verify that the domain belongs to the user $stmt = $pdo->prepare("SELECT COUNT(*) FROM domains WHERE id = ? AND user_id = ?"); $stmt->execute([$domainId, $userId]); $count = $stmt->fetchColumn(); if ($count == 0) { // The domain does not belong to the user return false; } // Proceed with deletion since the domain belongs to the user $stmt = $pdo->prepare("DELETE FROM domains WHERE id = ?"); $stmt->execute([$domainId]); return true; } // Function to update domain's IP address function updateDomainIP($domainId, $userId, $ipAddress, $pdo) { // Validate the IP address if (!filter_var($ipAddress, FILTER_VALIDATE_IP)) { // The IP address is not valid return false; } // Verify that the domain belongs to the user $stmt = $pdo->prepare("SELECT COUNT(*) FROM domains WHERE id = ? AND user_id = ?"); $stmt->execute([$domainId, $userId]); $count = $stmt->fetchColumn(); if ($count == 0) { // The domain does not belong to the user return false; } // Proceed with IP address update since the domain belongs to the user $stmt = $pdo->prepare("UPDATE domains SET ip_address = ? WHERE id = ?"); $stmt->execute([$ipAddress, $domainId]); return true; } // Handle domain removal if (isset($_GET['remove'])) { $userId = getUserId($_SESSION['username'], $pdo); $domainId = $_GET['remove']; $result = removeDomain($domainId, $userId, $pdo); if ($result !== true) { $_SESSION['error_messages'][] = "Error: You do not have permission to delete this domain."; } else { header("Location: https://tildenic.org/?page=user_domains"); exit; } } // Handle IP address update if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['update_ip'])) { $domainId = $_POST['domain_id']; $userId = getUserId($_SESSION['username'], $pdo); $ipAddress = $_POST['ip_address']; $result = updateDomainIP($domainId, $userId, $ipAddress, $pdo); if ($result !== true) { $_SESSION['error_messages'][] = "Error: Invalid IP address or you do not have permission to update the IP address for this domain."; } else { header("Location: https://tildenic.org/?page=user_domains"); exit; } } // Handle logout if (isset($_POST['logout'])) { session_destroy(); header("Location: https://tildenic.org/?page=login"); exit; } // Handle form submission for domain removal if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['remove_domain'])) { $domainId = $_POST['domain_id']; $userId = getUserId($_SESSION['username'], $pdo); if (!removeDomain($domainId, $userId, $pdo)) { $_SESSION['error_messages'][] = "Error: You do not have permission to delete this domain."; } else { header("Location: https://tildenic.org/?page=user_domains"); exit; } } // Redirect to the user domains page after processing the form if ($_SERVER["REQUEST_METHOD"] == "POST") { header("Location: https://tildenic.org/?page=user_domains"); exit; } // Function to validate and update IP addresses for a user's domains function validateAndUpdateIPs($userId, $pdo) { // Fetch all domains for the user $stmt = $pdo->prepare("SELECT id, ip_address FROM domains WHERE user_id = ?"); $stmt->execute([$userId]); $domains = $stmt->fetchAll(); $invalidIPs = []; foreach ($domains as $domain) { $domainId = $domain['id']; $ipAddress = $domain['ip_address']; // Check if the IP address is valid if (!empty($ipAddress) && !filter_var($ipAddress, FILTER_VALIDATE_IP)) { // IP address is invalid, update the domain to remove the IP address $updateStmt = $pdo->prepare("UPDATE domains SET ip_address = NULL WHERE id = ?"); $updateStmt->execute([$domainId]); // Add to the list of domains with invalid IPs $invalidIPs[] = $domainId; } } return $invalidIPs; } // When the user accesses their domain management page $userId = getUserId($_SESSION['username'], $pdo); $invalidIPDomains = validateAndUpdateIPs($userId, $pdo); if (!empty($invalidIPDomains)) { // Inform the user that some IP addresses were invalid and have been removed echo "Invalid IP addresses were found and removed from the following domains: " . implode(", ", $invalidIPDomains) . ". Please update them."; } $userId = getUserId($_SESSION['username'], $pdo); $domains = getUserDomains($userId, $pdo); ?>