setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $error = ''; $success = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); $password = $_POST['password'] ?? ''; $pgp_key = $_POST['pgp_key'] ?? ''; $ip = $_SERVER['REMOTE_ADDR']; if ($username && $password) { if (strlen($username) > 50 || strlen($password) < 8) { $error = 'Invalid data'; } else { $stmt = $db->prepare('SELECT COUNT(*) FROM registrations WHERE ip = ? AND created_at > DATE_SUB(NOW(), INTERVAL 1 HOUR)'); $stmt->execute([$ip]); $count = $stmt->fetchColumn(); if ($count >= 5) { $error = 'Registration limit exceeded for your IP'; } else { try { $stmt = $db->prepare('INSERT INTO users (username, password, pgp_key) VALUES (?, ?, ?)'); $stmt->execute([$username, password_hash($password, PASSWORD_DEFAULT), $pgp_key]); $stmt = $db->prepare('INSERT INTO registrations (ip) VALUES (?)'); $stmt->execute([$ip]); $success = 'Registration successful'; } catch (PDOException $e) { $error = 'Username already exists'; } } } } } ?>