martedì 23 agosto 2011

Archlinux: gestire il proprio iDevice (iPad/iPhone/iPod) senza bisogno di iTunes!

Oggi vi presenterò quella che spero sarà la più completa guida sulla gestione del vostro iDevice (sia esso un iPad, iPhone, iPod o chissà quale altra diavoleria della famiglia Apple) sotto Linux.
Se siete possessori di un Desktop Gnome le cose saranno decisamente più semplici (visto l'automount gestito da Nautilus) ma io vi illustrerò come fare le cose "manualmente", in modo da potersi adattare a qualsiasi Desktop e non dover per forza installare un Desktop che magari non vi aggrada.

Innanzitutto vediamo cosa ci serve:
  • libimobiledevice-git <- la libreria principale, quella che installerà il supporto vero proprio per il nostro iDevice su Linux
  • ideviceinstaller-git <- utile per gestire le applicazioni del nostro iDevice, ci permetterà non solo di elencarle, ma anche di backupparle e in futuro reinstallarle ad esempio dopo una formattazione.
  • ifuse <- necessario per "montare" il nostro iDevice su una delle cartelle del nostro PC in modo da poterlo esplorare come una normale periferica USB.
Installiamo il tutto quindi, digitando da un terminale:
yaourt -S libimobiledevice-git ideviceinstaller-git ifuse
Grazie a questa semplice mossa avremo adesso a disposizione un miriade di utilissimi programmi per gestire al meglio il nostro iDevice. Analizziamoli uno ad uno:

idevicebackup e idevicebackup2 Questi due programmi sono identici tra loro solo che la versione col 2 finale è diciamo più avanzata (e forse sperimentale?) in quanto possiede delle opzioni in più. Per quanta riguarda idevicebackup, questo comando ci permette di effettuare un backup del nostro iDevice per poi ripristinarlo in futuro. Al contrario del comando col 2 finale qui abbiamo solo due opzioni disponibili, ossia fare il backup o ripristinarlo. L'utilizzo è banale, collegate il vostro iDevice al PC e poi digitate in un terminale:
idevicebackup backup CARTELLA
Per creare un backup del vostro iDevice nella cartella CARTELLA (ovviamente nel comando sopra sostituite CARTELLA con il percorso della cartella in cui volete salvare il backup del vostro iDevice!). Oppure:
idevicebackup restore CARTELLA
Per ripristinare un backup creato in precedenza nella cartella CARTELLA. Il comando col 2 finale, ossia idevicebackup2, invece presenta oltre a backup e restore altri comandi, nello specifico:
  • restore --system <- ripristina anche i file di sistema.
  • restore --reboot <- riavvia l'iDevice quando ha finito il ripristino.
  • restore --copy <- crea una copia della cartella di backup prima di effettuare il ripristino.
  • restore --settings <- ripristina le impostazioni dell'iDevice dal backup.
  • info <- mostra i dettagli riguardo l'ultimo backup completato dell'iDevice.
  • list <- elenca (in formato CSV) tutti i file dell'ultimo backup fatto.
  • unback <- scompatta un backup completato in precedenza nella cartella _unback_
L'utilizzo nel terminale è identico al precedente programma.

Passiamo ora ad un nuovo tool che avremo a disposizione, ossia idevicedate. Questo programma ci permetterà di ottenere la data e l'ora dal nostro iDevice oppure di impostarle. L'utilizzo è il seguente:
idevicedate
E ci verrà stampato a terminale la data/ora corrente impostata nell'iDevice. Se vogliamo modificarla basta dare:
idevicedate -c
E la data/ora verrà reimpostata usando quella attuale del vostro PC. Volendo potete anche specificare un timestamp diverso da quello in uso sul vostro PC, dando come comando:
idevicedate -s TIMESTAMP
dove al posto di TIMESTAMP ovviamente dovete inserire un timestamp valido (leggete qui se non sapete cos'è un timestamp: http://en.wikipedia.org/wiki/Timestamp).

Un altro tool che avremo a disposizione è ideviceenterrecovery. Questo programma vi permetterà semplicemente di far andare immediatamente in Recovery Mode il vostro iDevice. Fate molta attenzione ad usarlo! Non presenta opzioni da poter usare e l'utilizzo è banale:
ideviceenterrecovery UUID
dove al posto di UUID ci deve andare l'ID univoco del vostro iDevice (è una stringa di 40 caratteri che identifica il vostro iDevice, leggete più avanti per sapere come ottenerlo!).

Un altro tool molto utile che avremo a disposizione è idevice_id. Questo programma vi permetterà di ottenere l'UUID del vostro iDevice di cui parlavamo sopra. Per elencare gli UUID di tutti gli iDevice collegati via USB date da terminale:
idevice_id -l

Un mini-appunto ora su ideviceimagemounter. Purtroppo non ho ben capito a cosa serve questo tool, comunque la descrizione ufficiale dice che:
Mounts the specified disk image on the device.
quindi tradotto letteralmente serve a "montare" sull'iDevice l'immagine disco specificata. Non so però a quale immagine disco si riferisca, se ne sapete più di me fatemelo sapere così aggiorno le info su questo programma ;)

Saltiamo quindi a ideviceinfo. Questo è il tool che ci darà tutte le informazioni che vogliamo sul nostro iDevice. Usando il semplice comando:
ideviceinfo -s
otterremo le informazioni basilari sul nostro iDevice. Aggiungendo un -x otterremo le stesse informazioni ma visualizzate in formato XML. Se però volessimo avere delle informazioni specifiche possiamo usare i cosiddetti "domini". Ad esempio se vogliamo sapere lo spazio occupato/rimanente sul nostro iDevice possiamo dare da terminale:
ideviceinfo -q com.apple.disk_usage
Se vogliamo altre informazioni possiamo sostituire nella stringa sopra a com.apple.disk_usage il "dominio" che ci interessa. Quelli disponibili sono:

    com.apple.disk_usage com.apple.mobile.battery com.apple.xcode.developerdomain com.apple.international com.apple.mobile.data_sync com.apple.mobile.tethered_sync com.apple.mobile.mobile_application_usage com.apple.mobile.backup com.apple.mobile.nikita com.apple.mobile.restriction com.apple.mobile.user_preferences com.apple.mobile.sync_data_class com.apple.mobile.software_behavior com.apple.mobile.iTunes.SQLMusicLibraryPostProcessCommands com.apple.mobile.iTunes.accessories com.apple.mobile.internal com.apple.mobile.wireless_lockdown com.apple.fairplay com.apple.iTunes com.apple.mobile.iTunes.store com.apple.mobile.iTunes
Anche qui mettendo un -x prima di -q possiamo visualizzare le info risultanti in XML.

Passiamo ora a idevicepair. Tramite questo tool possiamo effettuare o gestire il pairing tra il nostro PC e l'iDevice. L'utilizzo è:
idevicepair COMANDO
dove al posto di COMANDO potete usare uno dei seguenti comandi:
  • hostid <- visualizza l'ID host del computer in uso
  • pair <- effettua il pair dell'iDevice col computer in uso
  • validate <- controlla se l'iDevice è correttamente in pair col computer in uso
  • unpair <- annulla il pair tra l'iDevice e il computer in uso
  • list <- elenca tutte le iDevice in pair col computer in uso

Un altro tool che avremo a disposizione è idevicescreenshot. Tramite questo programma potremo fare uno screenshot dell'attuale schermata sull'iDevice e salvarlo sul PC in formato TIFF. Però attenzione: per funzionare questo comando richiede che un'immagine disco da sviluppatore sia stata installata sull'iDevice in precedenza (tramite il suddetto comando ideviceimagemounter). L'utilizzo è semplice, basta digitare in un terminale:
idevicescreenshot
tutto qui, l'immagine TIFF verrà salvata nella directory attuale.

Adesso vediamo idevicesyslog. Questo tool vi permetterà di visualizzare il log di sistema del vostro iDevice, dove vengono salvati tutti i messaggi di debug o di errore che si verificano durante l'utilizzo del vostro iDevice. Anche qui non c'è alcuna opzione da aggiungere, basta dare da terminale:
idevicesyslog
Per interrompere la visualizzazione del log basta dare un CTRL+C nel terminale stesso.

E con questo abbiamo concluso i tool disponibili grazie a libimobiledevice. Vediamo ora gli altri 2 tool, ossia ifuse e ideviceinstaller. Per quanto riguarda ideviceinstaller, grazie ad esso avremo un completo tool per analizzare, backuppare o ripristinare le app installate nel nostro iDevice. L'utilizzo è banale, basta digitare in un terminale dopo aver collegato il vostro iDevice:
ideviceinstaller OPZIONE
Dove al posto di OPZIONE potete inserire una delle opzioni disponibili per questo comando, che sono:
-l -o list_user <- elenca solamente le applicazioni dell'utente (è l'opzione di default)
-l -o list_system <- elenca solamente le applicazioni di sistema
-l -o list_all <- elenca tutti i tipi di applicazioni installate sull'iDevice
-l -o xml <- elenca le app e visualizza il risultato in formato XML
-i ARCHIVE <- installa l'applicazione specificata al posto di ARCHIVE nella stringa
-u APPID <- disinstalla l'applicazione il cui ID avete specificato al posto di APPID nella stringa
-g APPID <- aggiorna l'applicazione il cui ID avete specificato al posto di APPID nella stringa
-L <- elenca tutte le applicazioni backuppate in precedenza
-a APPID <- backuppa l'applicazione il cui ID avete specificato al posto di APPID nella stringa
-a APPID -o uninstall <- disinstalla dall'iDevice, dopo averla backuppata, l'applicazione il cui ID avete specificato al posto di APPID nella stringa
-a APPID -o app_only <- backuppa soltanto i dati dell'applicazione
-a APPID -o copy=PATH <- copia il backup dell'applicazione (dopo averlo fatto) nella cartella specificata al posto di PATH nella stringa.
-a APPID -o copy=PATH -o remove <- rimuove il backup dell'iDevice dopo averlo copiato nella cartella specificata al posto di PATH nella stringa
-r APPID <- ripristina il backup (fatto precedentemente) dell'applicazione di cui avete specificato l'ID al posto di APPID nella stringa
-R APPID <- rimuove il backup dell'applicazione di cui avete specificato l'ID al posto di APPID nella stringa
Per ottenere gli APPID che vi servono basta usare l'opzione -l per elencarle, visto che vi verranno elencate proprio per APPID ;)

E infine dedichiamoci ad ifuse, il comando principale che vi permetterà di montare il vostro iDevice sul PC come fosse una normalissima periferica USB. Come già detto in precedenza se usate Gnome questo comando non vi troverete ad usarlo spesso perché Nautilus monta in automatico il vostro iDevice. Detto questo però vediamo come si usa ifuse:
ifuse mount_point OPZIONE
dove al posto di mount_point va inserita una qualsiasi cartella ESISTENTE sul vostro Hard Disk e in cui volete montare il vostro iDevice (in pratica, una volta montato, entrando in quella cartella specificata potrete navigare all'interno del vostro iDevice!).
Al posto di OPZIONE potete inserire invece una delle seguenti opzioni:
--appid APPID <- Monterà la cartella "Documents" (quella in cui l'applicazione salva e carica tutti i suoi file!) dell'applicazione identificata dall'APPID inserito.
--root <- Monta il file system di root del vostro iDevice, permettendovi di navigare in davvero QUALSIASI cartella (anche le più nascoste!) del vostro iDevice. Richiede però il Jailbreak sul vostro iDevice, non funziona senza!
Per fare un esempio pratico, io per montare il mio iPad sotto Xfce digito in un terminale:
ifuse ~/iPad
e mi ritrovo l'iPad navigabile dalla cartella iPad nella mia home. Per "smontare" in modo sicuro l'iDevice caricato tramite ifuse basta dare da terminale un:
sudo umount mount_point
dove al posto di mount_point va inserita la cartella in cui avete montato l'iDevice con il comando ifuse di prima.

Adesso che abbiamo visto come "gestire" in toto il nostro iDevice, vediamo l'ultima cosa, ossia come gestire la multimedialità. In particolare vediamo come sincronizzare i contenuti (musica, video, libri, podcast...) col nostro iDevice. Esistono vari tool che sono compatibili con le periferiche di casa Apple ma io qui ve ne presento solo uno che fa tutto, se volete potete cercare con Google altri programmi compatibili e/o specifici ;) Io quindi vi parlerò di GtkPod, un semplicissimo programmino che vi permetterà di sincronizzare musica, video, podcast, ecc... col vostro iDevice. Per installarlo su Archlinux diamo in un terminale:
yaourt -S gtkpod
Una volta installato ricordiamoci che, a meno che non c'è l'automount per il nostro iDevice, prima di avviare GtkPod dobbiamo montare il nostro iDevice manualmente con il suddetto comando di ifuse. Una volta montanto avviamo GtkPod e vedremo che il nostro iDevice verrà automaticamente caricato.
A questo punto, tramite questo programmino davvero banale e facile da usare, potremo facilmente sincronizzare musica, video, podcast, libri, contatti, note, ecc... tra il nostro PC e il nostro iDevice!!!

Adesso un piccolo tip per la gestione immagini: non vi serve alcun programma specializzato! Infatti una volta montato il vostro iDevice con ifuse potrete accedere al suo interno dove troverete una cartella chiamata DCIM al cui interno ci saranno tutte le immagini presenti nella libreria del vostro iDevice. Potrete quindi visionarle, copiarle o cancellarle come normalissimi file.

Infine, prima di chiudere, voglio segnalarvi un ottimo programma per la conversione di video in formato compatibile con il vostro iDevice: sto parlando di Handbrake, un editor video facilissimo da usare grazie ai template preimpostati che troverete nella parte destra della finestra principale.
Una volta caricato un video quindi vi basterà cliccare sul template a destra relativo al vostro iDevice e avviare la conversione, il risultato sarà un video perfettamente compatibile con il vostro iDevice e pronto da essere inserito su di esso grazie al già citato GtkPod ;) Per installarlo su Archlinux basta dare:
yaourt -S handbrake

Aggiornamento: mi è stato segnalato un altro programma utile per attivare o disattivare il vostro iDevice (se mai vi dovesse servire!). Si tratta di ideviceactivate. Per installarlo date in un terminale:
yaourt -S ideviceactivate-git
L'utilizzo è il seguente:
ideviceactivate OPZIONE
dove al posto di OPZIONE dovete inserire una delle seguenti opzioni:
-x <- disattiva (o meglio, "toglie l'attivazione") l'iDevice
-e IMEI <- quando invia la richiesta di attivazione utilizza l'IMEI specificato al posto di "IMEI" nella stringa
-s IMSI <- quando invia la richiesta di attivazione utilizza l'IMSI specificato al posto di "IMSI" nella stringa
-i ICCID <- quando invia la richiesta di attivazione utilizza l'ICCID specificato al posto di "ICCID" nella stringa
-n SERIALNUMBER <- quando invia la richiesta di attivazione utilizza il serial number specificato al posto di "SERIALNUMBER" nella stringa
-f FILE <- attiva l'iDevice usando il file di attivazione posizionato nel percorso specificato al posto di "FILE" nella stringa
-c DIR <- salva i dati di attivazione nella cartella specificata al posto di "DIR" nella stringa (utile per riattivazioni future!)
-r DIR <- attiva l'iDevice usando i dati di attivazione salvati precedentemente nella cartella specificata al posto di "DIR" nella stringa.

Ed eccoci quindi ai commenti finali. Tramite questa guida avete avuto una panoramica completa su tutti i programmi e le opzioni che vi permetteranno di gestire il vostro iDevice con Archlinux senza sentire troppo la mancanza di iTunes.
Ovviamente se avete delle correzioni o delle aggiunte da segnalare fatelo attraverso i commenti di questo topic che provvederò a fare le giuste modifiche al più presto ;D

venerdì 19 agosto 2011

Archlinux: installare Adobe Reader (anche in Italiano)

Subito qualcuno dirà "ehi, ma perché installare quel coso pesante e soprattutto Adobe!?"... e come dargli torto? XD Però ovviamente (e purtroppo) ci sono alcuni PDF che, vuoi per struttura complessa, vuoi per complessità strutturale (no, non sono la stessa cosa lol) necessitano dell'originale Adobe Reader per essere visualizzati correttamente in ogni loro funzione/parte.
Per tale ragione "potrebbe" essere comodo necessario per qualcuno installare l'originale Adobe Reader sul proprio Archlinux. Ora vedremo come fare.

Innanzitutto da premettere che Adobe Reader non è presente nei repo ufficiali usati da pacman, ma questo non è un problema in quanto è presente nel repository AUR.
Il problema se vogliamo "più grave" è invece che l'ultima versione (ossia la 10, la X) non c'è proprio, mentre della versione prima (la 9) c'è solo la versione Inglese, Francese, Tedesco e Giapponese... insomma, se lo vogliamo in Italiano ci dobbiamo accontentare della versione 8.

Quindi, se vogliamo installare la versione 9 in Inglese, digitiamo in un terminale:
yaourt -S acroread
Se invece vogliamo installare la 8 però in Italiano allora digitiamo in un terminale:
yaourt -S acroread-it

Il mio consiglio però resta quella di usare lettori PDF "alternativi" più leggeri e maneggevoli (e magari direttamente in Italiano) e ricorrere ad Adobe Reader solo nel remoto caso in cui un PDF non vi venga aperto o visualizzato in modo corretto.

giovedì 18 agosto 2011

Linux: cercare file sul PC grazie a Catfish

Oggi vi parlerò di un'utilily secondo me immancabile su ogni sistema operativo: sto parlando della ricerca file!
Quante volte vi sarà capitato di non ricordare più in quale cartella del vostro Hard Disk avete messo un file in particolare? Quante volte dovrete mettervi a cercare fra innumerevoli livelli di sottocartelle o migliaia di file? Fare una cosa del genere a mano non è certo la migliore scelta, visto che porterebbe via tempo prezioso e soprattutto, causa sviste, si rischia di non giungere ad alcun risultato.
Proprio per tale ragione esistono un sacco di programmi che vi permettono di cercare file sul vostro HDD (anche via terminale, ovvio) ma io oggi vi presento forse il migliore e con comoda e facile interfaccia grafica: Catfish.


Come potete vedere dall'immagine sopra l'interfaccia è davvero banale: inserite il nome del file che volete cercare (o anche una parte di esso, o solo l'estensione, ecc...), impostate (ma solo se vi servono!) alcune funzioni aggiuntive (se volete cercare un termine esatto, o un tipo di file in particolare, o cercare tra i file nascosti, o limitare i risultati a un max di numero, ecc...), settate la cartella in cui volete cercare (con File System cercherete in TUTTO l'HDD) e date il via alla ricerca.
In pochi minuti (ovviamente tutto dipende dalla quantità di file tra cui cercare!) avrete i vostri risultati senza il minimo sforzo. Facile e veloce ;D

Per installare catfish su Archlinux date da terminale:
sudo pacman -S catfish
Su Ubuntu invece:
sudo apt-get install catfish
Lo troverete quindi sotto il menù Accessori.

martedì 16 agosto 2011

SpiderOak: l'alternativa, perfino migliore, a Dropbox!

Oggi vi voglio parlare di SpiderOak, un servizio di cloud storage che nulla ha da invidiare al ben più famoso Dropbox, anzi!
Innanzitutto rispetto a Dropbox che tanto è stato criticato per la sua sicurezza, SpiderOak presenta un sistema di criptaggio dati che impedisce perfino agli stessi dipendenti dell'azienda di poter accedere ai vostri file: questo significa che qualsiasi cosa accada, soltanto voi (o comunque soltanto con i vostri username e password) potrete accedere ai vostri file decriptati.
Anticipato questo, ciò che sono i punti di forza di SpiderOak sicuramente sono nella gestione del programma principale: in Dropbox una volta installato scegli quali cartelle sincronizzare e punto. In SpiderOak invece avrete un'interfaccia suddivisa in varie tab tra cui potrete gestire di tutto:

  • STATUS: da questa tab potrete tenere sotto controllo le operazioni attuali che sta compiendo il programma, suddivise per Backup, Sync e Share. Potrete anche cambiare la frequenza di ogni azione per ciascuna categoria.
  • BACKUP: da questa tab potrete scegliere una o più cartelle da tenere sincronizzate tra il computer in uso e il server di SpiderOak. Avrete accesso alla cartelle basilari (Scrivania, Musica, Video, Documenti, ecc...) com'anche ad una visualizzazione avanzata in cui potrete navigare in qualsiasi cartella del vostro Hard Disk.
  • VIEW: da questa tab potrete visualizzare ciò che è presente sul server di SpiderOak, ossia tutto ciò che avete backuppato in precedenza. Potrete scaricare i file o unirli in altri processi di backup/sincronizzazione.
  • SYNC: da questa tab potrete scegliere una o più cartella da tenere sincronizzate tra vari computer e il server. A differenza dell'opzione di Backup i file verranno tenuti sincronizzati tra vari PC (o device mobili), nel senso che se cancellate un file dalla cartella di uno dei PC in sincronia allora il file verrà eliminato da tutti gli altri PC automaticamente. In pratica quello che Dropbox fa di default, solo che qui è "una scelta", non un obbligo.
  • SHARE: da questa tab potrete attivare la condivisione pubblica di una cartella a vostra scelta con tutte le conseguenti impostazioni che potete gestire.
Oltre a queste tab principali, il programma vi mette a disposizione anche varie funzioni di visualizzazione log e statistiche del vostro account.
Ma oltre al fantastico programma principale c'è anche l'interfaccia Web che è davvero chiara e ben fatta da cui potrete accedere a tutti i file che avete backuppato sul server SpiderOak.
Altre cose da segnalare che mi ricordo al momento è che SpiderOak è totalmente multipiattaforma (funge su Windows, Linux e MAC), ha applicazioni anche per il mondo mobile (iOS, Android e Maemo) e infine, tramite il codice promozionale worldbackupday (da inserire all'iscrizione), potrete avere ben 5GB di spazio online gratuito invece dei soliti 2!

Detto tutto questo non mi resta che lasciarvi il link della home page da cui scaricare questo ottimo programma che vi consiglio vivamente (soprattutto se usate già il peggiore Dropbox!): http://www.spideroak.com

lunedì 15 agosto 2011

PHP: gestire l'upload di immagini

Primo minitutorial sul PHP (che ahimé ultimamente mi trovo a dover utilizzare sempre più spesso xD), vediamo come gestire l'upload di immagini.
Tralasciando la parte dedicata al form per l'upload che non ci interessa per lo scopo di questo tutorial, passiamo subito al codice.
Direi di cominciare subito con un bel controllo sulla validità della richiesta:
if (is_uploaded_file($_FILES['image']['tmp_name']))
{
...
}
Ovviamente al posto di 'image' ci và il valore del campo "name" che avete usato nel form di upload ;)
Ma a cosa serve questo controllo? Beh, presto detto: la funzione is_uploaded_file ritorna come valore TRUE se la richiesta di upload è stata effettuata via HTTP POST. Che significa questo in parole povere? Che in questo modo vi assicurate che un utente malintenzionato non stia cercando, invece di uppare una innocua immagine, di inserire del codice maligno sul vostro server.
È un semplice controllo di "sicurezza" quindi, ma vi consiglio SEMPRE di usarlo. Il web è pieno di gente con cattive intenzioni :P

Dopo questo controllino di sicurezza direi che possiamo andare a prendere i primi dettagli sulla immagine che si vuole uppare. Perché fare questo? Beh, ad esempio possiamo voler limitare l'upload solo a un particolare tipo di immagini escludendo certi altri (GIF, PNG, BMP, JPEG, ecc...), oppure potremmo voler limitare l'upload a immagini di dimensioni minori di un certo TOT di byte, oppure ancora limitare l'upload a immagini non più larghe di un TOT di pixel, e via dicendo.
Vediamo il primo controllo:
if (($_FILES['image']['size'] < (5*1024*1024)) { ... }

Tramite questo semplice controllo possiamo gestire il "peso massimo" che deve avere il file. Nell'esempio sopra il massimo è 5MB ma naturalmente potete impostarlo come e quanto vi pare.
Come potete notare rispetto a prima è cambiato il secondo termine dell'array $_FILES: infatti è grazie al campo 'size' che possiamo ottenere la dimensione in byte del file che stiamo cercando di uppare.

Adesso vediamo un nuovo controllo:
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
if (($width > 640) || ($height > 480)) {
...
}
In questo esempio abbiamo preso le informazioni sull'immagine con la prima riga e subito dopo abbiamo controllato che l'immagine sia minore di 640x480px.
All'interno dell'IF sopra va inserito il codice che si vuole usare nel caso in cui l'immagine SUPERI le dimensioni consentite (nell'esempio appunto 640x480).

Ora controlliamo il tipo d'immagine:
list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
if (($type!=1) && ($type!=2) && ($type!=3)) {
...
}
In questo esempio controlliamo che l'immagine appartenga ai primi tre tipi di immagini supportati dal PHP. Anche qui all'interno dell'IF va inserito il codice da eseguire nel caso l'immagine che si sta tentando di uppare NON sia in uno dei suddetti 3 formati.
I formati consentiti dal PHP per le immagini sono:
[IMAGETYPE_GIF] => 1
[IMAGETYPE_JPEG] => 2
[IMAGETYPE_PNG] => 3
[IMAGETYPE_SWF] => 4
[IMAGETYPE_PSD] => 5
[IMAGETYPE_BMP] => 6
[IMAGETYPE_TIFF_II] => 7
[IMAGETYPE_TIFF_MM] => 8
[IMAGETYPE_JPC] => 9
[IMAGETYPE_JP2] => 10
[IMAGETYPE_JPX] => 11
[IMAGETYPE_JB2] => 12
[IMAGETYPE_SWC] => 13
[IMAGETYPE_IFF] => 14
[IMAGETYPE_WBMP] => 15
[IMAGETYPE_JPEG2000] => 9
[IMAGETYPE_XBM] => 16
[IMAGETYPE_ICO] => 17
[IMAGETYPE_UNKNOWN] => 0
[IMAGETYPE_COUNT] => 18


E adesso direi che con i controlli possiamo finirla qui, dovremmo aver soddisfatto un po' tutte le eventuali limitazioni che un normale servizio di hosting possa imporre.
Uppiamo quindi la nostra immagine!
if (!move_uploaded_file($_FILES['image']['tmp_name'], $_FILES['image']['name'])) {
...
}
Nel codice sopra andiamo ad uppare l'immagine salvandola sul server con il nome (compreso di estensione!) che ha il file della vostra immagine sul vostro PC.
All'interno dell'IF va inserito il codice da eseguire nel caso l'upload NON vada a buon fine.

Finito, come avete potuto leggere non è così complesso come sembra ;)