yogiwhere/public/schoolarea/uploadphotos.php

133 lines
5.3 KiB
PHP

<?php
// Abilita la visualizzazione degli errori per il debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Collegamento al database
require_once('../Connections/yogiwherequery.php');
$conn = new mysqli($servername, $username, $password, $database);
// Verifica se la connessione al database è avvenuta correttamente
if ($conn->connect_error) {
echo json_encode(['success' => false, 'message' => 'Errore di connessione al database: ' . $conn->connect_error]);
exit;
}
// Controllo se il file è stato inviato tramite POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Verifica se il file e l'ID della scuola sono presenti
if (isset($_FILES['file']) && isset($_POST['idyogaschool'])) {
$file = $_FILES['file'];
$idyogaschool = $_POST['idyogaschool'];
// Estrai le informazioni del file
$originalName = $file['name'];
$tempPath = $file['tmp_name'];
$fileType = $file['type'];
$fileSize = $file['size'];
// Verifica l'estensione del file (solo JPG e PNG)
$validExtensions = ['image/jpeg', 'image/png', 'image/jpg'];
if (!in_array($fileType, $validExtensions)) {
echo json_encode(['success' => false, 'message' => 'Formato file non valido. Solo JPG, JPEG e PNG sono consentiti.']);
exit;
}
// Limita il numero di immagini a 5 per questa scuola
$query = $conn->prepare("SELECT COUNT(*) AS photo_count FROM photoyogaschool WHERE idyogaschool = ?");
$query->bind_param("i", $idyogaschool);
$query->execute();
$result = $query->get_result();
$data = $result->fetch_assoc();
if ($data['photo_count'] >= 5) {
echo json_encode(['success' => false, 'message' => 'Numero massimo di 5 foto raggiunto.']);
exit;
}
// Rinomina il file
$timestamp = time();
$newFileName = $idyogaschool . '-' . $timestamp . '-' . basename($originalName);
// Definisci il percorso di salvataggio
$uploadDir = 'uploadphotoschool/';
$uploadPath = $uploadDir . $newFileName;
// Verifica se la directory di upload è scrivibile
if (!is_dir($uploadDir) || !is_writable($uploadDir)) {
echo json_encode(['success' => false, 'message' => 'Directory di upload non esistente o non scrivibile.']);
exit;
}
// Funzione per ridimensionare l'immagine
function resizeImage($file, $fileType, $maxWidth, $maxHeight)
{
list($width, $height) = getimagesize($file);
$ratio = $width / $height;
if ($width > $maxWidth || $height > $maxHeight) {
if ($width > $height) {
$newWidth = $maxWidth;
$newHeight = $maxWidth / $ratio;
} else {
$newHeight = $maxHeight;
$newWidth = $maxHeight * $ratio;
}
} else {
$newWidth = $width;
$newHeight = $height;
}
// Crea una nuova immagine ridimensionata
if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
$src = imagecreatefromjpeg($file);
} elseif ($fileType === 'image/png') {
$src = imagecreatefrompng($file);
} else {
return false; // Tipo di file non supportato
}
$dst = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
return $dst;
}
// Ridimensiona l'immagine prima di salvarla
$resizedImage = resizeImage($tempPath, $fileType, 800, 600);
if (!$resizedImage) {
echo json_encode(['success' => false, 'message' => 'Errore durante il ridimensionamento dell\'immagine.']);
exit;
}
// Salva l'immagine ridimensionata
if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
if (!imagejpeg($resizedImage, $uploadPath)) {
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file JPEG.']);
exit;
}
} elseif ($fileType === 'image/png') {
if (!imagepng($resizedImage, $uploadPath)) {
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file PNG.']);
exit;
}
}
// Libera la memoria occupata dall'immagine ridimensionata
imagedestroy($resizedImage);
// Salva le informazioni nel database
$query = $conn->prepare("INSERT INTO photoyogaschool (photofilename, idyogaschool) VALUES (?, ?)");
$query->bind_param("si", $newFileName, $idyogaschool);
if ($query->execute()) {
echo json_encode(['success' => true, 'message' => 'File caricato e salvato con successo.']);
} else {
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio nel database.']);
}
} else {
echo json_encode(['success' => false, 'message' => 'Nessun file o ID scuola ricevuto.']);
}
} else {
echo json_encode(['success' => false, 'message' => 'Richiesta non valida.']);
}