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
/
progressgym
/
modules
/
progreso
/
Viewing: actions.php
<?php /** * Módulo Progreso - Acciones AJAX * CRUD + upload de imágenes de progreso */ require_once __DIR__ . '/../../config/database.php'; header('Content-Type: application/json'); $db = getDB(); $uid = $_SESSION['user_id'] ?? 0; $method = $_SERVER['REQUEST_METHOD']; if (!$uid) { echo json_encode(['success' => false, 'error' => 'No autenticado']); exit; } // Directorio de uploads $uploadDir = __DIR__ . '/../../uploads/progreso/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } try { switch ($method) { case 'POST': // Verificar si es una edición (sin imagen nueva) o creación $id = $_POST['id'] ?? ''; $descripcion = trim($_POST['descripcion'] ?? ''); if (!empty($id)) { // Editar descripción (y opcionalmente reemplazar imagen) if (!empty($_FILES['imagen']) && $_FILES['imagen']['error'] === UPLOAD_ERR_OK) { // Obtener imagen anterior para eliminar $stmt = $db->prepare("SELECT imagen FROM progreso WHERE id = :id AND usuario_id = :uid"); $stmt->execute([':id' => $id, ':uid' => $uid]); $old = $stmt->fetch(); if ($old && file_exists(__DIR__ . '/../../' . $old['imagen'])) { unlink(__DIR__ . '/../../' . $old['imagen']); } // Subir nueva imagen $ext = strtolower(pathinfo($_FILES['imagen']['name'], PATHINFO_EXTENSION)); $filename = uniqid('prog_') . '.' . $ext; $filepath = $uploadDir . $filename; if (!move_uploaded_file($_FILES['imagen']['tmp_name'], $filepath)) { echo json_encode(['success' => false, 'error' => 'Error al subir la imagen']); exit; } $rutaImagen = 'uploads/progreso/' . $filename; $stmt = $db->prepare("UPDATE progreso SET imagen = :imagen, descripcion = :descripcion WHERE id = :id AND usuario_id = :uid"); $stmt->execute([':imagen' => $rutaImagen, ':descripcion' => $descripcion, ':id' => $id, ':uid' => $uid]); } else { // Solo actualizar descripción $stmt = $db->prepare("UPDATE progreso SET descripcion = :descripcion WHERE id = :id AND usuario_id = :uid"); $stmt->execute([':descripcion' => $descripcion, ':id' => $id, ':uid' => $uid]); } echo json_encode(['success' => true, 'message' => 'Progreso actualizado']); } else { // Crear nuevo registro if (empty($_FILES['imagen']) || $_FILES['imagen']['error'] !== UPLOAD_ERR_OK) { echo json_encode(['success' => false, 'error' => 'La imagen es requerida']); exit; } // Validar tipo de archivo $allowedTypes = ['image/jpeg', 'image/png', 'image/webp', 'image/gif']; if (!in_array($_FILES['imagen']['type'], $allowedTypes)) { echo json_encode(['success' => false, 'error' => 'Tipo de archivo no permitido']); exit; } // Subir imagen $ext = strtolower(pathinfo($_FILES['imagen']['name'], PATHINFO_EXTENSION)); $filename = uniqid('prog_') . '.' . $ext; $filepath = $uploadDir . $filename; if (!move_uploaded_file($_FILES['imagen']['tmp_name'], $filepath)) { echo json_encode(['success' => false, 'error' => 'Error al subir la imagen']); exit; } $rutaImagen = 'uploads/progreso/' . $filename; $fecha = date('Y-m-d'); $stmt = $db->prepare("INSERT INTO progreso (usuario_id, imagen, descripcion, fecha, duo_id) VALUES (:uid, :imagen, :descripcion, :fecha, :duo)"); $stmt->execute([ ':uid' => $uid, ':imagen' => $rutaImagen, ':descripcion' => $descripcion, ':fecha' => $fecha, ':duo' => getDuoId() ]); echo json_encode([ 'success' => true, 'message' => 'Progreso registrado', 'id' => $db->lastInsertId() ]); } break; case 'DELETE': $data = json_decode(file_get_contents('php://input'), true); if (empty($data['id'])) { echo json_encode(['success' => false, 'error' => 'ID requerido']); exit; } // Obtener imagen para eliminar del servidor $stmt = $db->prepare("SELECT imagen FROM progreso WHERE id = :id AND usuario_id = :uid"); $stmt->execute([':id' => $data['id'], ':uid' => $uid]); $registro = $stmt->fetch(); if ($registro) { $imgPath = __DIR__ . '/../../' . $registro['imagen']; if (file_exists($imgPath)) { unlink($imgPath); } $stmt = $db->prepare("DELETE FROM progreso WHERE id = :id AND usuario_id = :uid"); $stmt->execute([':id' => $data['id'], ':uid' => $uid]); echo json_encode(['success' => true, 'message' => 'Progreso eliminado']); } else { echo json_encode(['success' => false, 'error' => 'Registro no encontrado']); } break; default: echo json_encode(['success' => false, 'error' => 'Método no permitido']); } } catch (Exception $e) { echo json_encode(['success' => false, 'error' => $e->getMessage()]); }
Coded With 💗 by
0x6ick