Tul xxx Tul
User / IP
:
216.73.216.146
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
/
app
/
views
/
clientes
/
Viewing: edit.php
<?php $error = $error ?? null; ?> <nav aria-label="breadcrumb" class="mb-3"> <ol class="breadcrumb" style="font-size: 0.85rem;"> <li class="breadcrumb-item"><a href="<?= BASE_URL ?>/clientes" style="color: var(--primary);">Clientes</a></li> <li class="breadcrumb-item active">Editar Cliente</li> </ol> </nav> <?php if ($error): ?> <div class="alert alert-danger alert-dismissible fade show d-flex align-items-center" role="alert" style="border: none; border-radius: 10px; border-left: 4px solid #ef476f;"> <i class="bi bi-exclamation-circle-fill me-2"></i><?= htmlspecialchars($error) ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <div class="card-custom"> <div class="card-header-custom"> <h5><i class="bi bi-pencil-square me-2"></i>Editar Cliente</h5> </div> <div class="card-body-custom"> <form action="<?= BASE_URL ?>/clientes/update/<?= $cliente['id'] ?>" method="POST" enctype="multipart/form-data"> <div class="row g-4"> <!-- Foto del Cliente --> <div class="col-12 text-center mb-2"> <div class="position-relative d-inline-block"> <div id="photoPreview" class="client-photo-preview"> <?php if (!empty($cliente['foto'])): ?> <img src="<?= BASE_URL ?>/public/assets/uploads/clientes/<?= htmlspecialchars($cliente['foto']) ?>" alt="Preview"> <?php else: ?> <i class="bi bi-person text-muted" style="font-size: 3rem;"></i> <?php endif; ?> </div> <label for="foto" class="btn btn-sm btn-primary position-absolute bottom-0 end-0 rounded-circle d-flex align-items-center justify-content-center" style="width: 36px; height: 36px; border: 3px solid white; cursor: pointer; box-shadow: 0 2px 8px rgba(67, 97, 238, 0.3);"> <i class="bi bi-camera-fill"></i> <input type="file" id="foto" name="foto" class="d-none" accept="image/*"> </label> </div> <div class="form-text mt-2 small">Foto de perfil (Opcional)</div> </div> <div class="col-md-6"> <label for="nombre" class="form-label fw-semibold" style="font-size: 0.85rem;">Nombre <span class="text-danger">*</span></label> <input type="text" class="form-control" id="nombre" name="nombre" value="<?= htmlspecialchars($cliente['nombre']) ?>" required style="border-radius: 8px; padding: 10px 14px;"> </div> <div class="col-md-6"> <label for="apellido" class="form-label fw-semibold" style="font-size: 0.85rem;">Apellido</label> <input type="text" class="form-control" id="apellido" name="apellido" value="<?= htmlspecialchars($cliente['apellido'] ?? '') ?>" style="border-radius: 8px; padding: 10px 14px;"> </div> <div class="col-md-6"> <label for="cedula" class="form-label fw-semibold" style="font-size: 0.85rem;">Cédula</label> <input type="text" class="form-control" id="cedula" name="cedula" value="<?= htmlspecialchars($cliente['cedula'] ?? '') ?>" style="border-radius: 8px; padding: 10px 14px;"> </div> <div class="col-md-6"> <label for="telefono" class="form-label fw-semibold" style="font-size: 0.85rem;">Teléfono</label> <input type="text" class="form-control" id="telefono" name="telefono" value="<?= htmlspecialchars($cliente['telefono'] ?? '') ?>" style="border-radius: 8px; padding: 10px 14px;"> </div> <div class="col-md-6"> <label for="email" class="form-label fw-semibold" style="font-size: 0.85rem;">Correo Electrónico</label> <input type="email" class="form-control" id="email" name="email" value="<?= htmlspecialchars($cliente['email'] ?? '') ?>" style="border-radius: 8px; padding: 10px 14px;"> </div> <div class="col-md-6"> <label for="moneda" class="form-label fw-semibold" style="font-size: 0.85rem;">Moneda <span class="text-danger">*</span></label> <select class="form-select currency-select" id="moneda" name="moneda" required style="border-radius: 8px; padding: 10px 14px;"> <?php require_once __DIR__ . '/../../core/Currency.php'; $monedas = Currency::getByRegion(); $monedaActual = $cliente['moneda'] ?? 'USD'; foreach ($monedas as $region => $monedasRegion): ?> <optgroup label="<?= htmlspecialchars($region) ?>"> <?php foreach ($monedasRegion as $codigo => $info): ?> <option value="<?= $codigo ?>" <?= $codigo === $monedaActual ? 'selected' : '' ?>> <?= $codigo ?> - <?= htmlspecialchars($info['nombre']) ?> (<?= htmlspecialchars($info['simbolo']) ?>) </option> <?php endforeach; ?> </optgroup> <?php endforeach; ?> </select> </div> <div class="col-md-6"> <label for="saldo_total" class="form-label fw-semibold" style="font-size: 0.85rem;">Saldo Total (Deuda)</label> <div class="input-group"> <span class="input-group-text currency-symbol" style="border-radius: 8px 0 0 8px;"><?= Currency::getSymbol($monedaActual) ?></span> <input type="number" class="form-control" id="saldo_total" name="saldo_total" step="0.01" min="0" value="<?= htmlspecialchars($cliente['saldo_total'] ?? '0') ?>" style="border-radius: 0 8px 8px 0; padding: 10px 14px;"> </div> </div> <div class="col-12"> <label for="direccion" class="form-label fw-semibold" style="font-size: 0.85rem;">Dirección</label> <textarea class="form-control" id="direccion" name="direccion" rows="2" style="border-radius: 8px; padding: 10px 14px; resize: vertical;"><?= htmlspecialchars($cliente['direccion'] ?? '') ?></textarea> </div> </div> <!-- Portal de Acceso --> <div class="mt-5 mb-4"> <h6 class="fw-bold border-bottom pb-2 mb-3"><i class="bi bi-shield-lock me-2"></i>Acceso al Portal de Cliente</h6> <div class="p-4 rounded-4" style="background: rgba(67, 97, 238, 0.03); border: 1px dashed rgba(67, 97, 238, 0.2);"> <?php if (empty($cliente['usuario_id'])): ?> <div class="row g-3 align-items-end"> <div class="col-md-5"> <label for="portal_password" class="form-label fw-semibold small">Asignar Contraseña Temporal</label> <div class="input-group"> <span class="input-group-text"><i class="bi bi-key"></i></span> <input type="password" class="form-control" id="portal_password" name="portal_password" placeholder="Mínimo 6 caracteres" style="border-radius: 0 8px 8px 0;"> </div> <div class="form-text small">El usuario será el correo electrónico del cliente.</div> </div> <div class="col-md-7"> <div class="alert alert-info py-2 px-3 mb-0 small" style="border-radius: 10px; border: none;"> <i class="bi bi-info-circle-fill me-2"></i> Si asignas una contraseña, se creará una cuenta para que el cliente pueda ver sus tareas y pagos. </div> </div> </div> <?php else: ?> <div class="d-flex align-items-center justify-content-between flex-wrap gap-3"> <div class="d-flex align-items-center gap-3"> <div class="bg-success text-white p-2 rounded-circle" style="width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;"> <i class="bi bi-check-lg fs-5"></i> </div> <div> <div class="fw-bold text-success">Acceso al portal habilitado</div> <div class="text-muted small">El cliente ya tiene una cuenta activa vinculada.</div> </div> </div> <div class="col-md-4"> <label for="portal_password" class="form-label fw-semibold small">Cambiar Contraseña (Opcional)</label> <input type="password" class="form-control" id="portal_password" name="portal_password" placeholder="Nueva contraseña" style="border-radius: 8px;"> </div> </div> <?php endif; ?> </div> </div> <div class="d-flex gap-2 mt-4 pt-3" style="border-top: 1px solid var(--border-color);"> <button type="submit" class="btn btn-primary-custom"> <i class="bi bi-check-lg me-1"></i> Actualizar Cliente </button> <a href="<?= BASE_URL ?>/clientes/show/<?= $cliente['id'] ?>" class="btn btn-light" style="border-radius: 6px;"> <i class="bi bi-arrow-left me-1"></i> Cancelar </a> </div> </form> </div> </div> <script> <script> // Currency symbols map const currencySymbols = <?= json_encode(array_map(function($m) { return $m['simbolo']; }, Currency::getAll())) ?>; // Update currency symbol when currency changes document.getElementById('moneda')?.addEventListener('change', function() { const symbol = currencySymbols[this.value] || '$'; document.querySelector('.currency-symbol').textContent = symbol; }); // Photo preview document.getElementById('foto').addEventListener('change', function(e) { const reader = new FileReader(); reader.onload = function(e) { document.getElementById('photoPreview').innerHTML = `<img src="${e.target.result}" style="width: 100%; height: 100%; object-fit: cover;">`; } if (this.files[0]) reader.readAsDataURL(this.files[0]); }); </script>
Coded With 💗 by
0x6ick