programmazione:php:controllare_file_immagine
Controllare se un file è veramente un'immagine
Autore: Fabio Di Matteo
Ultima revisione: 07/01/2026 10:38
Controlli non pevisti in questa funzione: dimenzione file, estenzione.
function checkRealImage($path) { $allowedMime = [ 'image/jpeg', 'image/png', 'image/gif', ]; $mime=mime_content_type($path); if (!getimagesize($path)) return false; if (!in_array($mime,$allowedMime)) return false; return true; }
Convertire l'immagine per evitare problemi di sicurezza
Anche se abbiamo stabilito che il file contiene un'immagine è sempre meglio ricreare una nuova immagine con il contenuto dell'originale.
<?php function convertToPng(string $srcPath, string $dstPath, int $quality = 6): bool { if (!file_exists($srcPath)) { trigger_error("Source file not found: $srcPath", E_USER_WARNING); return false; } $info = getimagesize($srcPath); if ($info === false) { trigger_error("Unable to read image information: $srcPath", E_USER_WARNING); return false; } $mime = $info['mime']; switch ($mime) { case 'image/jpeg': $img = imagecreatefromjpeg($srcPath); break; case 'image/gif': $img = imagecreatefromgif($srcPath); break; case 'image/bmp': $img = imagecreatefrombmp($srcPath); break; case 'image/webp': $img = imagecreatefromwebp($srcPath); break; case 'image/png': $img = imagecreatefrompng($srcPath); break; default: trigger_error("Unsupported format: $mime", E_USER_WARNING); return false; } if ($img === false) { trigger_error("Error loading image: $srcPath", E_USER_WARNING); return false; } $saved = imagepng($img, $dstPath, $quality); if (!$saved) { trigger_error("Error writing PNG file: $dstPath", E_USER_WARNING); return false; } return true; } ?>
programmazione/php/controllare_file_immagine.txt · Ultima modifica: 07/01/2026 21:26 da Fabio Di Matteo
