In questo tutorial di base vedremo come realizzare un semplice form per il caricamento di immagini da parte dell’utente, comprensivo di controlli.
Una volta inviato il form, il php si occuperà di controllare:
– che il file rientri entro certe dimensioni di peso
– che il file sia entro determinate dimensioni di larghezza e altezza (in pixel)
– che il file inviato sia di tipo immagine e cioè che abbia l’estensione gif, jpg o png
Lo script è liberamente scaricabile e già pronto per essere integrato nel vostro sito, con le dovute modifiche alle variabili numeriche e all’aspetto della pagina (che qui è lasciata volutamente spartana).
Form di invio
Il form non ha niente di particolare.
L’input sarà di tipo file. Ricordatevi, inoltre, di inserire il parametro “enctype” nel tag del form.
1 2 3 4 5 |
<form action="" method="post" enctype="multipart/form-data"> <input name="image" type="file" /> <br /><br /> <input name="invia" type="submit" value="Carica immagine" /> </form> |
I controlli dopo l’invio
Adesso diamo una rapida occhiata ai controlli da effettuare una volta inviato il form.
Anche in questo caso lo script dovrebbe essere molto chiaro: prima di tutto si controlla se il file sia stato uploadato, quindi saranno effettuati (in ordine) le verifiche su peso, dimensioni e tipologia. Da notare che il peso del file è caricato in bytes (1 kilobyte = 1024 byte).
Inoltre, se esiste già un file con il nome del file caricato, l’upload sarà bloccato per impedire una sovrascrizione.
L’unica cosa che dovete fare, è cambiare i parametri numerici delle dimensioni.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
if(is_uploaded_file($_FILES['image']['tmp_name'])) { //controllo che il file non superi i 100 KB (1 kilobyte = 1024 byte) if($_FILES['image']['size']>102400) $messaggio.="Il file ha dimensioni che superano i 100 KB<br />"; //recupero le informazioni sull'immagine list($width, $height, $type, $attr)=getimagesize($_FILES['image']['tmp_name']); //controllo che le dimensioni (in pixel) non superino 800x600 if(($width>800) or ($height>600)) $messaggio.="Il file non deve superare le dimensioni di 800x600<br />"; //controllo che il file sia in uno dei formati GIF, JPG o PNG if(($type!=1) and ($type!=2) and ($type!=3)) $messaggio.="Il file caricato deve essere un'immagine<br />"; //controllo che non esiste già un file con lo stesso nome if(file_exists('upload_img/'.$_FILES['image']['name'])) $messaggio.="Esiste già un file con lo stesso nome. Rinominare l'immagine prima di caricarla<br />"; //salvo il file nella cartella di destinazione if(!move_uploaded_file($_FILES['image']['tmp_name'], 'upload_img/'.$_FILES['image']['name'])) $messaggio.="Errore imprevisto nel caricamento del file. Controllare i permessi della cartella di destinazione"; } |
(1) http://www.futuretimeline.net/22ndcentury/2100-2149.htm
sei molto bravo complimenti , mi dici perchè vedo sulla pagina che inserisco il codice php , le scritte oltre al form ?
Ciao Luca,
fammi capire bene: quali scritte vedi?
ti mando il link
http://www.momentidicoppia1.altervista.org non riesco a capire alcune cose.dove sbaglio … mi puoi aiutare per piacere sto impazzendo
Io non vedo niente di sbagliato. Il form c’è e non vedo altre “scritte” strane.
ok adesso va meglio ho cercato di modificarlo leggendo un po di cose tue …grazie …solo che adesso non so dove salva l’immagine ….ho messo questo script quà… if(!move_uploaded_file($_FILES[‘upload_name’][‘tmp_name’],’img/’ . $_FILES[‘upload_name’][‘name’]); che dovrebbe salvarmi l’immagine nella cartella img …ma non avviene …..mi aiuti? ti sono molto grato
Fa attenzione a dove si trova il file in cui viene eseguito l’upload.
Se per esempio lo script di upload è nel file “www.sito.it/cartella/upload.php” , l’immagine la salva in “www.sito.it/cartella/img”.
Inoltre la cartella deve già esistere. Se anche così non funziona, controlla i permessi di scrittura della cartella (se non è accessibile, non può salvare l’immagine).
ok fatto grazie ….ti volevo porre un altro quesito:come faccio a far inserire le foto di un utente su una pagina dedicata…ossia se due utenti si registrano le foto di entrambi vanno nella stessa cartella img ,ma non riesco a distinguere di chi sono ……