🖼️ Upload Immagini in PHP

Caricare immagini è una delle funzionalità più usate nei siti web:

PHP permette di gestire facilmente l’upload di file tramite i form HTML.


🧠 Come funziona l’upload

Il processo è questo:

  1. 📤 l’utente seleziona un file

  2. 📡 il file viene inviato al server

  3. 💾 PHP lo salva in una cartella


🧾 Form HTML per upload

Per caricare file bisogna usare un form speciale:

<form action="upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="immagine">
    <button type="submit">Carica</button>
</form>

⚠ Importante

👉 enctype="multipart/form-data" è obbligatorio
senza questo l’upload NON funziona ❌


📥 Recuperare il file in PHP

I file caricati si trovano nella variabile:

$_FILES

📌 Esempio base

<?php

$nome_file = $_FILES["immagine"]["name"];
$tmp_file = $_FILES["immagine"]["tmp_name"];

move_uploaded_file($tmp_file, "uploads/" . $nome_file);

echo "Immagine caricata 🖼️";
?>

📖 Spiegazione

Campo Significato
name nome originale del file
tmp_name file temporaneo sul server

👉 move_uploaded_file() salva il file definitivamente.


📁 Cartella di destinazione

Devi creare una cartella, ad esempio:

uploads/

👉 e dare i permessi di scrittura.


⚠ Controllare errori

<?php

if($_FILES["immagine"]["error"] == 0){
    echo "File ricevuto ✅";
}else{
    echo "Errore upload ❌";
}
?>

🛡️ Controllare il tipo di file

È importante verificare che sia davvero un’immagine:

<?php

$tipo = $_FILES["immagine"]["type"];

if($tipo == "image/jpeg" || $tipo == "image/png"){
    echo "Formato valido ✅";
}else{
    echo "Formato non valido ❌";
}
?>

📏 Controllare la dimensione

<?php

if($_FILES["immagine"]["size"] > 2000000){
    echo "File troppo grande ❌";
}
?>

👉 2000000 byte ≈ 2MB


🧪 Esempio completo

<?php

if(isset($_FILES["immagine"])){

    $nome = $_FILES["immagine"]["name"];
    $tmp = $_FILES["immagine"]["tmp_name"];
    $tipo = $_FILES["immagine"]["type"];
    $dimensione = $_FILES["immagine"]["size"];

    if($tipo == "image/jpeg" || $tipo == "image/png"){

        if($dimensione < 2000000){
         move_uploaded_file($tmp, "uploads/" . $nome);
            echo "Upload completato 🎉";
        }else{
            echo "File troppo grande ❌";
        }
    }else{
        echo "Formato non valido ❌";
    }
}
?>

🛡️ Consigli di sicurezza


🎯 Riassunto


📚 Conclusione

L’upload di immagini è una funzionalità potente ma va gestita con attenzione per evitare problemi di sicurezza.