PHP – Form e controlli per l’upload di immagini da parte dell’utente

Piani di luce azzurra su sagoma di testa umana

Quando si lascia all’utente la possibilità di caricare un’immagine, è sempre bene approntare più livelli di controllo: peso, dimensioni, estensione del file (1)

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";

}
Copyright immagini

(1) http://www.futuretimeline.net/22ndcentury/2100-2149.htm

Etichette:, , ,
Ultimi Commenti
  1. luca
  2. luca
  3. luca
  4. luca

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *