Allora ho creato uno script prendendo alcune funzioni da internet per ridiemnsionare l'immagine potete dare un occhiata e controllare se ho fatto tutto bene vi pregho sono 2 paginette!

index.php (che è quella che mi preoccupa di più)

Codice PHP:
<?php
$max_file_size 
102400;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
$image_type = array('jpeg''jpg''png''gif''bmp'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
if(isset($_FILES['file'])){//Se esiste $_FILES
 // se l'immagine è orizzontale questo numero rappresenta la larghezza in pixel della miniatura
// altrimenti, se l'immagine è verticale, rappresenta l'altezza della miniatura.
$thumb_width 165;
// se l'immagine è orizzontale questo numero rappresenta la larghezza in pixel della foto dopo essere stata ridimensionata
// altrimenti, se l'immagine è verticale, ne rappresenta l'altezza.
$photo_width 165;
require 
"class.upload.php";//includiamo la classe
$obj = new upload($_FILES['file'],$destination_path "",$max_file_size,$image_type); //Inizializziamo la classe!
 // Se non esiste la cartella di destinazione delle miniature ne si forza la creazione
        
if (!file_exists($destination_path))
        {
            
mkdir($VariabileConID 0777);
        }
/*Il primo parametro è il file
il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
Il terzo parametro è il limite massimo di grandezza dei files
il quarto parametro è l'array contenente le estensioni accettate
*/
}

?>

<?php
echo "Estensioni accettate : ";//Scrive, tramite foreach, tutte le estensioni accettate
foreach($image_type as $type){
echo 
$type." ";
}
// Apertura della directory in cui sono contenute le foto a dimensione originale
        
if ($handle opendir($VariabileConID))
        
// Lettura delle immagini conenute nella cartella $VariabileConID
           
while (false !== ($file readdir($handle)))
           {
                       list(
$width$height$type$attr) = @getimagesize($VariabileConID.$file);

        
// Elaborazione delle nuove dimensioni (altezza e larghezza) in proporzione.
        // Ciò consente di non alterare la qualità della immagine.
                           
if($width $height)
                           {
                               
$new_width $quanto;
                               
$new_height = ($quanto $height) / $width;
                               
$new_height number_format($new_height0);
                           }
                           elseif(
$height $width)
                           {
                               
$new_height $quanto;
                               
$new_width = ($quanto $width) / $height;
                               
$new_width number_format($new_width0);
                           }
                           elseif(
$height == $width)
                           {
                               
$new_width $quanto;
                               
$new_height $quanto;
                           }
                            
//Se si sta visualizzando una singola foto e questa è già stata ridimensionata si ignora questo passaggio, altrimenti la foto viene ridimensionata.
                           // L'"if" controlla se la foto in questione ha già le dimensioni desiderate. Se le dimensioni non sono uguali a quelle volute, verrà ridimensionata.
                           
if ($mode == "view")
                           {
                               if (
$new_height != $height && $new_width != $width)
                               {
                                    isset(
$compression) ? $compression $compression $compression 100// In caso non sia settata la compressione gli si assegna il valore di default
                                    
$destimg=imagecreatetruecolor($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");// Creazione Immagine
                                    
ImageCopyResampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento"); //Ridimensionamento Nuova Immagine
                                    
ImageJPEG($destimg$destination_path.$file$compression) or die("Problemi nel salvataggio"); //Salvataggio Nuova Immagine
                               
}
                           }
?>
<form enctype="multipart/form-data" action="index.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size?>" />
<input type="file" name="file" />
<input type="submit" name="upload" value="Upload">

</form>
class.upload.php

Codice PHP:
<?php

class upload{//Il nome della classe
public $files;//Variabile pubblica di classe contenente il file
public $dir;//Variabile pubblica di classe contenente la cartella
public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
public $ext;//Variabile pubblica di classe contenente l'estensione del file
public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
public $error;//Variabile pubblica di classe contenente gli errori
public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
public $link;//Variabile pubblica di classe  contenente l'URL dell'immagine
public $my_err;//Variabile pubblica di classe  contenente l'errore finale
function load($esito,$err ""){//Funzione load .Prevede due variabili :
//esito(true o false, true se non c'è errore, false se c'è);
//Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



if(empty($err) && $esito true){//Se non ci sono errori e l'esito è ok

$this->error "";
if(!
$this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
//Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
$this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
}



if(empty(
$this->error)){
{
$this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

$id 0;

if(!@
move_uploaded_file($this->files['tmp_name'],$this->complete)){   //Se l'upload è andato a buon fine...

$this->error[] = "Impossibile copiare il file nella directory";


}
}else{
//Se non esiste un file con quel nome...
if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$VariabileConID))//Upload!
{

$this->error[] = "Impossibile copiare il file nella directory";


}
$this->link "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
}

}


}
 else{
$this->error[] = $err;//Altrimenti aggiunge l'errore
  
}


 }
 
$this->no_error() ? print($this->link):print("Sono stati riscontrati i seguenti errori :
 "
.$this->my_err);
 }


function 
set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

$ext_file explode("." $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
//ES: $stringa = "ciao.mi.chiamo.valerio";
//$stringa_array = explode(".",$stringa);
//$stringa contiene:
//$stringa[0] = "ciao"
//$stringa[1] = "mi"
//$stringa[2] = "chiamo"
//$stringa[3] = "valerio"
$count_ext_files count($ext_file)-1;//Contiamo il numero di elementi nell'array
//ES: $array = Array("Ciao","xx","xxxx","jjb");
//$count = count($array);
//Restituisce 4
$myext $ext_file[$count_ext_files];
return 
$myext;//La funzione darà come risultato l'estensione

}


function 
is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
$this->ext $this->set_file_ext($this->files['name']);      //Tramite la nostra funzione creata prima settiamo l'estensione
if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
{
return 
true;//Restituisce true
}else{
return 
false;//Restituisce false
}

}

function 
__construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
//Da notare l'uso di $this->files invece di $files
// la variabile globale di classe $this-> si usa nelle funzioni della classe
//nelle classi di tipo statico non si utilizza $this-> ma self::
//Assegnamo ad ogni variabile di classe il rispettivo contenuto
$this->files $files;
$this->dir =  $dir;
$this->max_size $max_size;
$this->ammissed_ext =   $ammissed_ext;
switch(
$this->files['error'])


                       {   
//Fa uno switch degli errori presenti all'interno della variabile error di $this->files

case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
$this->error[] = "Non &egrave; stato selezionato alcun file!";
$this->load(false,$this->error);
break;

case 
UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
$this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
$this->load(false,$this->error);
break;

case 
UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
$this->error[] = "Le dimensioni superano il valore massimo consentito!";
$this->load(false,$this->error);
break;

case 
UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
$this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
$this->load(false,$this->error);
break;

case 
UPLOAD_ERR_OK://Nessun errore
$this->load(true);
break;

default: 
//S c'è un errore sconosciuto...
$this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
$this->load(false,$this->error);
break;
                       }

                       }
                       
function 
no_error(){ //Funzione che controlla se ci sono errori
if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

foreach($this->error as $err){//Scorre l'array ...
$this->my_err .= $err."
"
;  //E lo riempe!
}
return 
false;
}else 
//Altrimenti...



}
                       }

?>
GRAZIE! 1000