50 lines
1.7 KiB
PHP
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;
|
|
?>
|