34849-vm/save_cobertura_banner.php
2026-02-05 06:00:56 +00:00

50 lines
1.7 KiB
PHP

<?php
session_start();
// 1. Verificar autenticación y rol
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit;
}
// 2. Validar que sea una petición POST y que se haya enviado un archivo
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_FILES['banner_image']) || $_FILES['banner_image']['error'] !== UPLOAD_ERR_OK) {
$_SESSION['error_message'] = "Error: No se recibió ningún archivo o hubo un error en la subida.";
header("Location: configuracion.php");
exit;
}
$target_dir = "assets/uploads/";
$target_file = $target_dir . "cobertura_banner.jpg";
$image_tmp_name = $_FILES["banner_image"]["tmp_name"];
$image_name = $_FILES["banner_image"]["name"];
// 3. Validar que el archivo sea una imagen real
$check = getimagesize($image_tmp_name);
if ($check === false) {
$_SESSION['error_message'] = "El archivo subido no es una imagen válida.";
header("Location: configuracion.php");
exit;
}
// 4. Validar la extensión del archivo (JPG, PNG, JPEG, GIF)
$imageFileType = strtolower(pathinfo($image_name, PATHINFO_EXTENSION));
$allowed_types = ["jpg", "png", "jpeg", "gif"];
if (!in_array($imageFileType, $allowed_types)) {
$_SESSION['error_message'] = "Solo se permiten archivos de tipo JPG, JPEG, PNG y GIF.";
header("Location: configuracion.php");
exit;
}
// 5. Intentar mover el archivo a su destino final
// La función move_uploaded_file es segura contra ataques de path traversal.
if (move_uploaded_file($image_tmp_name, $target_file)) {
$_SESSION['success_message'] = "La imagen del banner de Cobertura ha sido actualizada correctamente.";
} else {
$_SESSION['error_message'] = "Hubo un error inesperado al guardar la imagen.";
}
header("Location: configuracion.php");
exit;
?>