One Hat Cyber Team
Your IP :
216.73.216.36
Server IP :
162.240.179.46
Server :
Linux vps-14493116.nutrivittasaude.com.br 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.2.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
lifeprimeti
/
meta.lifeprimeti.com.br
/
Edit File:
recuperar.php
<?php require_once __DIR__ . '/config/database.php'; if (isAuthenticated()) { redirect(URL_BASE . 'public/dashboard.php'); } $msg = ''; $erro = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = trim($_POST['email'] ?? ''); if (empty($email)) { $erro = 'Informe seu email.'; } else { $stmt = $pdo->prepare("SELECT id, nome FROM usuarios WHERE email = ? AND ativo = 1 LIMIT 1"); $stmt->execute([$email]); $usuario = $stmt->fetch(); if ($usuario) { require_once __DIR__ . '/includes/email.php'; $config = getConfigSmtp(); if (empty($config['ativo']) || empty($config['host'])) { $erro = 'Sistema de email nao configurado. Entre em contato com o administrador.'; } else { $token = bin2hex(random_bytes(32)); $expira = date('Y-m-d H:i:s', strtotime('+1 hour')); $pdo->prepare("INSERT INTO password_reset_tokens (usuario_id, token, expires_at) VALUES (?, ?, ?)") ->execute([$usuario['id'], $token, $expira]); $link = URL_BASE . 'redefinir.php?token=' . $token; $corpo = '<h2>Recuperacao de Senha</h2> <p>Ola <strong>' . sanitize($usuario['nome']) . '</strong>,</p> <p>Recebemos uma solicitação de recuperação de senha para sua conta.</p> <p style="margin:24px 0"><a href="' . $link . '" style="display:inline-block;padding:12px 32px;background:#667eea;color:#fff;border-radius:8px;text-decoration:none;font-weight:600">Redefinir Senha</a></p> <p>Este link expira em <strong>1 hora</strong>.</p> <p>Se voce nao solicitou esta recuperacao, ignore este email.</p>'; enviarEmail($email, 'Recuperacao de Senha - ' . APP_NAME, $corpo); $msg = 'Enviamos um link de recuperacao para ' . sanitize($email) . '. Verifique sua caixa de entrada.'; } } else { $erro = 'Nenhuma conta encontrada com este email.'; } } } ?> <!DOCTYPE html> <html lang="pt-BR" data-bs-theme="dark"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Recuperar Senha — <?= APP_NAME ?></title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"> <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/animate.css@4.1.1/animate.min.css"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet"> <style> * { font-family: 'Inter', sans-serif; margin: 0; padding: 0; box-sizing: border-box; } body { background: #0b0b1a; min-height: 100vh; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; } body::before { content: ''; position: fixed; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(ellipse at 20% 50%, rgba(102, 126, 234, 0.12) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(118, 75, 162, 0.12) 0%, transparent 50%), radial-gradient(ellipse at 50% 80%, rgba(245, 158, 11, 0.08) 0%, transparent 50%); animation: bgFloat 20s ease-in-out infinite; z-index: 0; } @keyframes bgFloat { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(-3%, -2%); } 50% { transform: translate(2%, -3%); } 75% { transform: translate(-2%, 2%); } } .container-inner { width: 460px; position: relative; z-index: 1; animation: fadeInUp 0.8s ease; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } } .card { background: rgba(18, 18, 42, 0.6); backdrop-filter: blur(24px); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 24px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(102, 126, 234, 0.08); padding: 2.5rem; } .logo { text-align: center; margin-bottom: 2rem; } .logo .icon { width: 64px; height: 64px; background: linear-gradient(135deg, rgba(102,126,234,0.2), rgba(118,75,162,0.2)); border-radius: 18px; display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; font-size: 2rem; color: #00d4ff; filter: drop-shadow(0 0 15px rgba(0,212,255,0.3)); } .logo h1 { font-weight: 800; font-size: 1.5rem; background: linear-gradient(135deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .form-control { background: rgba(255,255,255,0.04) !important; border: 1px solid rgba(255,255,255,0.1) !important; color: #fff !important; border-radius: 12px !important; padding: 0.85rem 1.15rem !important; } .form-control:focus { border-color: #667eea !important; box-shadow: 0 0 0 3px rgba(102,126,234,0.15) !important; } .btn-grad { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border: none; border-radius: 12px; padding: 0.85rem; font-weight: 600; width: 100%; color: #fff; box-shadow: 0 4px 20px rgba(102,126,234,0.4); transition: all 0.3s ease; } .btn-grad:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(102,126,234,0.5); } .alert-msg { background: rgba(16,185,129,0.15); border: 1px solid rgba(16,185,129,0.2); color: #6ee7b7; border-radius: 12px; padding: 0.75rem 1rem; margin-bottom: 1.5rem; font-size: 0.9rem; } .alert-err { background: rgba(239,68,68,0.15); border: 1px solid rgba(239,68,68,0.2); color: #fca5a5; border-radius: 12px; padding: 0.75rem 1rem; margin-bottom: 1.5rem; font-size: 0.9rem; } .text-muted { color: rgba(255,255,255,0.3) !important; } .orb { position: fixed; border-radius: 50%; filter: blur(80px); pointer-events: none; z-index: 0; animation: orbPulse 6s ease-in-out infinite; } @keyframes orbPulse { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.1); } } </style> </head> <body> <div class="orb" style="width:400px;height:400px;background:rgba(102,126,234,0.12);top:-10%;right:-10%"></div> <div class="orb" style="width:300px;height:300px;background:rgba(118,75,162,0.12);bottom:-5%;left:-5%;animation-delay:-2s"></div> <div class="container-inner"> <div class="card"> <div class="logo"> <div class="icon"><i class="bi bi-key"></i></div> <h1>Recuperar Senha</h1> </div> <?php if ($msg): ?><div class="alert-msg"><i class="bi bi-check-circle me-2"></i><?= $msg ?></div><?php endif; ?> <?php if ($erro): ?><div class="alert-err"><i class="bi bi-exclamation-triangle me-2"></i><?= sanitize($erro) ?></div><?php endif; ?> <?php if (!$msg): ?> <form method="POST"> <div class="mb-4"> <label class="form-label text-muted">Seu email cadastrado</label> <input type="email" name="email" class="form-control" placeholder="seu@email.com" required> </div> <button type="submit" class="btn-grad"><i class="bi bi-send me-2"></i>Enviar Link</button> </form> <?php endif; ?> <div class="text-center mt-4"> <a href="<?= URL_BASE ?>login.php" class="text-muted" style="text-decoration:none;font-size:0.9rem"> <i class="bi bi-arrow-left me-1"></i>Voltar ao login </a> </div> </div> </div> </body> </html>
Simpan