Atlantide Web Island

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Tutorials Php e MySql Caricamento di file da moduli

Caricamento di file da moduli

Abbiamo il desiderio di caricare un file mediante un modulo ?
La soluzione è utilizzare le capacità di caricamento di file incorporate in PHP, che supportano l'operazione di POST di un file in un modulo e l'accesso ad esso mediante l'array $_FILES.

Precisiamo subito una cosa...Non utilizzare l'estensione per determinare il tipo di file, poichè è facile rinominare un eseguibile con un'estensione "sicura".
E' molto più sicuro la chiave 'type' dell'array $_FILE per verificare il tipo MIME (Multipurpose Internet Mail Extension, estensione di posta internet multiuso) del file, e ammettere solo i tipi ritenuti sicuri. A questo link troverete la lista dei più comuni tipi di file usati nel web.
Qualche problema si è presentato sul formato png, per poi scoprire che Mozilla le accetta come "image/png", mentre Internet explorer come "image/x-png", per cui nell'array dei file consentiti li abbiamo inseriti entrambi.

Dopo questo lungo preambolo veniamo al dunque. Creiamo sul server una cartella che possiamo chiamare "prova_caricamento". Al suo interno andremo a caricare il nostro script e nel frattempo, nello stesso livello, creiamo un'altra directory con nome "uploads", alla quale setteremo i permessi su 755.

upload

Andiamo ad analizzare nel dettaglio il codice della pagina upload.php
Inanzitutto dobbiamo creare il modulo per l'invio del file. Di norma, nei moduli per l'invio di contenuti testuali non è necessario dichiarare il tipo di codifica da effettuare, ma nel caso d'invio di oggetti diventa indispensabile. Per cui con il tag enctype istruiamo il browser sul tipo d'informazioni che verrano fornite al server.

Avete notato il campo nascosto "MAX_FILE_SIZE" ? Rappresenta un importante variabile di configurazione di PHP che influenza il caricamento di file POST.
Determina le dimensioni massime di dati che PHP può accettare in una singola richiesta POST.

Passiamo adesso all'elaborazione dei dati inviati, grazie ai contenuti della variabile $_FILES.
Daprima, controlleremo se è presente un'oggetto nel modulo, attraverso un esame delle dimensioni. Se sono pari a 0, avremo l'arresto dello script.

Dopo di che passiamo alla verifica di files consentiti, di cui abbiamo parlato abbondantemente all'inizio di questo tutorial

Quando un file è stato caricato, viene memorizzato in una directory temporanea che per impostazione predefinita è la directory temporanea di sistema. Le imformazioni su dimensioni, ripo e nomi originale e temopraneo vengono salvate nell'array $_FILES.

Successivamente il nome del file temporaneo viene fornito alla funzione move_uploaded_file(), utilizzata per copiare il file dalla directory temporanea a una nuova posizione.

Ultimo aggiornamento Lunedì 15 Dicembre 2008 17:46  

Notizie flash

Ricordiamo a tutti gli utenti di Atlantide che il dual login dal forum non è supportato. Per cui se vi loggerete dal forum non sarete loggati su joomla. Questa è una pecca assai seccante di jfusion.
Speriamo che rivedano presto le loro posizioni a riguardo le licenze di mofica del codice.
Giochi onlineVideo CalcioDivertimentoPerline