PHP  »  Articoli  »  Soluzioni in PHP 

Soluzioni in PHP: una galleria di immagini

di: Gino Giorgetti     27 Novembre 2008

Questo è il primo articolo della sezione Soluzioni in PHP, una sezione in cui suggeriamo semplici strumenti di programmazione PHP per le più comuni necessità di un sito Web. Indirizzati soprattutto a programmatori non esperti, possono essere d'aiuto anche a chi di PHP sa tutto, o quasi.

In un Web sempre più multimediale, è di fondamentale importanza includere in un sito Web un sistema per gestire immagini e gallerie. PHP mette a disposizione dei programmatori strumenti eccezionalmente validi per risolvere questi problemi.

In questo articolo realizzeremo, in ogni suo aspetto, un completo strumento per la gestione delle immagini, per la creazione di gallerie e per la loro navigazione, il tutto senza ricorrere al supporto di un database.

Per far ciò sarà necessario che il nostro applicativo possa leggere il contenuto delle directory del nostro sito, creare nuove directory, gestire l'upload delle immagini. L'unica risorsa necessaria sono le librerie GD2 che utilizzeremo per ridimensionare le immagini.

Il codice completo della mini-applicazione può essere scaricato e usato liberamente a partire dal link download presente in alto in questo articolo.

Creazione delle Gallerie

Nel nostro esempio, creare una galleria vuol dire creare una nuova directory. Infatti le nostre gallerie avranno come nome quello della directory che andremo a creare tramite la funzione mkdir($percordoDirectory, $Mode) dove il parametro $Mode corrisponde ai permessi della cartella (es. 0755).

Un'accortezza, dato che i nomi di file e directory non possono contenere spazi, sostituiremo questi con il carattere _ (underscore) utilizzando la funzione str_replace($daSostituire, $sostituto, $stringa), procedura che utilizzeremo più volte nel corso della creazione della galleria. Ovviamente eseguiremo la procedura inversa ogni volta che vorremo procedere alla stampa del nome della galleria.

Potremmo anche dover cancellare una galleria, quindi dovremo cancellare la directory corrispondente utilizzando la funzione rmdir($percordoDirectory). Da notare che questa funzione è in grado di cancellare solo directory vuote, se la galleria contiene delle immagini dovremo procedere alla loro cancellazione (utilizzando unlink($nomeFile)) prima di poter eliminare la directory, vedremo più avanti come creare una funzione che legge il contenuto di una directory e come sfruttare il tutto a nostro vantaggio.

Upload delle immagini

Per procedere all'upload di una immagine faremo ricorso ad una funzione che creeremo appositamente.

function UploadFile ($File, $DirectoryPrincipale, $SubDirectory)
   {
     $NomeFile = $_FILES[$File] ['name'];
     $NomeFile = str_replace(" ", "_", $NomeFile);
     $FileSplit = explode(".",$NomeFile);
     $Estensione = array_pop($FileSplit);
   
     if(strcasecmp($Estensione, "jpg") != 0 && strcasecmp($Estensione, "jpeg") != 0 && strcasecmp($Estensione, "gif") != 0 && strcasecmp($Estensione, "png") != 0)
       {
         return "Il file inserito non è accettato";
       }
     
     
     if (is_uploaded_file($_FILES[$File]['tmp_name']))
       {
         $DestinazioneFile = "".$DirectoryPrincipale."/".$SubDirectory."/".$NomeFile."";
         if(move_uploaded_file($_FILES[$File]['tmp_name'], $DestinazioneFile))
            {
              return "Upload eseguito con successo";
            }
         else
            {
              return "Impossibile eseguire l'upload";
            }
       }     
     else
       {
         return "Il file non è stato caricato";
       }
   }

Alla funzione UploadFile ($File, $DirectoryPrincipale, $SubDirectory) passeremo il valore File corrispondente all'immagine che intendiamo caricare tramite il campo input-file, in più dovremo dire alla funzione qual è la directory principale in cui stiamo lavorando ($DirectoryPrincipale) ed il nome della galleria in cui caricare il file($SubDirectory).

La funzione si preoccupa di verificare che il file caricato sia un'immagine, confrontando l'estensione finale dopo di che la funzione is_uploaded_file($_FILES[$File]['tmp_name']) verifica che il file sia stato effettivamente caricato in una directory temporanea. Ora non resta che spostare il file dalla directory temporanea nella posizione che desideriamo ed eventualmente modificarne il nome move_uploaded_file($_FILES[$File]['tmp_name'], $DestinazioneFile)).

Se tutto è andato bene riceveremo un messaggio che ci comunicherà Upload eseguito con successo. Con le opportune modifiche, questa funzione è ideale per qualsiasi tipo di upload, anche per upload multipli.

Guide PHP

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti