Tul xxx Tul
User / IP
:
216.73.216.159
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
/
eileen
/
admin
/
pages
/
Viewing: dashboard.php
<?php $db = getDB(); // Estadísticas $totalUsers = $db->query('SELECT COUNT(*) FROM users')->fetchColumn(); $totalMessages = $db->query('SELECT COUNT(*) FROM guestbook_messages')->fetchColumn(); $totalRsvp = $db->query('SELECT COUNT(*) FROM rsvp_confirmations')->fetchColumn(); $totalGallery = $db->query('SELECT COUNT(*) FROM gallery_images')->fetchColumn(); $confirmedRsvp = $db->query("SELECT COUNT(*) FROM rsvp_confirmations WHERE status LIKE '%asistiremos%'")->fetchColumn(); // Countdown $countdown = $db->query('SELECT event_date FROM countdown_settings LIMIT 1')->fetch(); $eventDate = $countdown ? $countdown['event_date'] : '2026-12-31 20:00:00'; // Últimos mensajes $recentMessages = $db->query('SELECT * FROM guestbook_messages ORDER BY created_at DESC LIMIT 5')->fetchAll(); // Últimas confirmaciones $recentRsvp = $db->query('SELECT * FROM rsvp_confirmations ORDER BY created_at DESC LIMIT 5')->fetchAll(); ?> <div class="stats-grid"> <div class="stat-card"> <div class="stat-icon purple"><i class="ph-fill ph-users-three"></i></div> <div class="stat-info"> <div class="stat-label">Usuarios</div> <div class="stat-number"><?= $totalUsers ?></div> </div> </div> <div class="stat-card"> <div class="stat-icon gold"><i class="ph-fill ph-book-open-text"></i></div> <div class="stat-info"> <div class="stat-label">Mensajes</div> <div class="stat-number"><?= $totalMessages ?></div> </div> </div> <div class="stat-card"> <div class="stat-icon green"><i class="ph-fill ph-envelope-open"></i></div> <div class="stat-info"> <div class="stat-label">Confirmaciones</div> <div class="stat-number"><?= $totalRsvp ?></div> </div> </div> <div class="stat-card"> <div class="stat-icon blue"><i class="ph-fill ph-images"></i></div> <div class="stat-info"> <div class="stat-label">Fotos</div> <div class="stat-number"><?= $totalGallery ?></div> </div> </div> </div> <div class="dashboard-grid"> <!-- Countdown al evento --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-timer"></i> Cuenta Regresiva</div> </div> <div style="text-align:center; padding:1rem 0;"> <div id="adminCountdown" style="display:flex; justify-content:center; gap:1rem;"></div> <p style="margin-top:1rem; color:var(--admin-text-muted); font-size:.85rem;"> Evento: <?= htmlspecialchars(date('d/m/Y H:i', strtotime($eventDate))) ?> </p> </div> </div> <!-- RSVP resumen --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-chart-pie"></i> Resumen RSVP</div> </div> <div style="display:flex; align-items:center; justify-content:center; gap:2rem; padding:1rem 0;"> <div style="text-align:center;"> <div style="font-size:2.5rem; font-weight:800; color:var(--admin-success);"><?= $confirmedRsvp ?></div> <div style="font-size:.75rem; color:var(--admin-text-muted); text-transform:uppercase; letter-spacing:.1em;">Confirmados</div> </div> <div style="width:1px; height:60px; background:var(--admin-border);"></div> <div style="text-align:center;"> <div style="font-size:2.5rem; font-weight:800; color:var(--admin-danger);"><?= $totalRsvp - $confirmedRsvp ?></div> <div style="font-size:.75rem; color:var(--admin-text-muted); text-transform:uppercase; letter-spacing:.1em;">No asisten</div> </div> </div> </div> </div> <div class="dashboard-grid" style="margin-top:0;"> <!-- Últimos mensajes --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-chat-dots"></i> Últimos Mensajes</div> <a href="index.php?page=guestbook" class="btn btn-outline btn-sm">Ver todos</a> </div> <?php if (empty($recentMessages)): ?> <div class="empty-state"><i class="ph-fill ph-chat-circle-dots"></i><p>No hay mensajes aún</p></div> <?php else: ?> <?php foreach ($recentMessages as $msg): ?> <div style="padding:.7rem 0; border-bottom:1px solid var(--admin-border);"> <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:.3rem;"> <strong style="font-size:.85rem; color:var(--admin-gold);"><?= htmlspecialchars($msg['name']) ?></strong> <span style="font-size:.7rem; color:var(--admin-text-muted);"><?= date('d/m/Y', strtotime($msg['created_at'])) ?></span> </div> <p style="font-size:.82rem; color:var(--admin-text-muted); line-height:1.5; margin:0;"><?= htmlspecialchars(mb_substr($msg['message'], 0, 80)) ?>...</p> </div> <?php endforeach; ?> <?php endif; ?> </div> <!-- Últimas confirmaciones --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-envelope-open"></i> Últimas Confirmaciones</div> <a href="index.php?page=rsvp" class="btn btn-outline btn-sm">Ver todas</a> </div> <?php if (empty($recentRsvp)): ?> <div class="empty-state"><i class="ph-fill ph-envelope-simple"></i><p>No hay confirmaciones aún</p></div> <?php else: ?> <?php foreach ($recentRsvp as $r): ?> <div style="padding:.7rem 0; border-bottom:1px solid var(--admin-border); display:flex; align-items:center; justify-content:space-between;"> <div> <strong style="font-size:.85rem;"><?= htmlspecialchars($r['names'] ?: 'Sin nombre') ?></strong> <span style="font-size:.75rem; color:var(--admin-text-muted); margin-left:.5rem;"><?= $r['guests_count'] ?> invitados</span> </div> <span class="badge <?= strpos($r['status'], 'asistiremos') !== false ? 'badge-success' : 'badge-danger' ?>"> <?= htmlspecialchars($r['status']) ?> </span> </div> <?php endforeach; ?> <?php endif; ?> </div> </div> <script> (function(){ const target = new Date('<?= $eventDate ?>').getTime(); const el = document.getElementById('adminCountdown'); function pad(n){ return String(n).padStart(2,'0'); } function update(){ const now = Date.now(); const d = Math.max(target - now, 0); const days = Math.floor(d/(1000*60*60*24)); const hrs = Math.floor((d%(1000*60*60*24))/(1000*60*60)); const min = Math.floor((d%(1000*60*60))/(1000*60)); const sec = Math.floor((d%(1000*60))/1000); el.innerHTML = [ {v:days,l:'Días'},{v:hrs,l:'Hrs'},{v:min,l:'Min'},{v:sec,l:'Seg'} ].map(i=>`<div style="text-align:center"><div style="width:60px;height:60px;border-radius:14px;background:var(--admin-surface);border:1px solid var(--admin-border);display:grid;place-items:center;font-size:1.6rem;font-weight:800;color:var(--admin-gold);">${pad(i.v)}</div><div style="font-size:.65rem;color:var(--admin-text-muted);margin-top:.4rem;text-transform:uppercase;letter-spacing:.1em;">${i.l}</div></div>`).join(''); } update(); setInterval(update, 1000); })(); </script>
Coded With 💗 by
0x6ick