[PHP e FTP upload] controllo file allegato

luigi777

Utente Attivo
14 Feb 2008
1.073
1
38
38
Massa, Italy
Salve, ho fatto questo script tramite vari tutorial..

l'unico che mi manca il controllo dei file jpg , png , gif.

mi dite come posso fare??

uso classi esterne e settaggi esterni..

ecco il codice:

PHP:
if(isset($_POST['submit']))
{

$filep=$_FILES['userfile']['tmp_name'];   // <--  più meno forse devo controllare questi giusto?
$fname=$_FILES['userfile']['name']; // <--  più meno forse devo controllare questi giusto?
// make a connection to the ftp server
$conn_id = ftp_connect($ftp_server);


// login with username and password
$login_result = ftp_login($conn_id , $ftp_user_name , $ftp_user_pass);

// check connection
if((!$conn_id)||(!$login_result)){
echo "FTP connection has failed!" ;
echo "Attempted to connect to $ftp_server for user $ftp_user_name" ;
exit;
}else{
//echo "Connected to $ftp_server, for user $ftp_user_name" ;
}

/// upload a file
if (ftp_put($conn_id, ''.$ftp_remote_dir.'/'.strtolower(photo_dir($_POST["_intSezioneID"])).'/img_tmp/'.$fname, $filep, FTP_BINARY)) {
 $msg =  "successfully uploaded $fname\n";
 
	$img = new Image('../public/media/photo/'.strtolower(photo_dir($_POST["_intSezioneID"])).'/img_tmp/'. $fname);

    //creo l'immagine sorgente

    $result = $img->CreateSourceImage();
	$img->SaveProportionateImage('../public/media/photo/'.strtolower(photo_dir($_POST["_intSezioneID"])). '/img_big/' . $fname, IMAGE_QUALITY, IMAGE_HEIGHT);

        //salvo l'immagine con altezza 75 lasciandola proporzionata

    $img->SaveProportionateImage('../public/media/photo/'.strtolower(photo_dir($_POST["_intSezioneID"])). '/img_thumb/' .$fname, THUMB_QUALITY, THUMB_HEIGHT);
	//libero la memoria cancellando l'immagine sorgente
    $img->Free();
 
 
 
} else {
$error = "There was a problem while uploading $name\n";
}

// close the FTP stream
ftp_close($conn_id); 

}
vi ringrazio molto..

buona serata.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, puoi provare ad usare la funzione pathinfo()

ti restituisce un array con delle informazioni sul file

puoi recuperare l'estensione in questo modo

PHP:
$pathinfo = pathinfo($_FILES['userfile']['name']);

if($pathinfo['extension'] == 'png') {
    echo "questa è un immagine png";
}
 

luigi777

Utente Attivo
14 Feb 2008
1.073
1
38
38
Massa, Italy
Ciao, puoi provare ad usare la funzione pathinfo()

ti restituisce un array con delle informazioni sul file

puoi recuperare l'estensione in questo modo

PHP:
$pathinfo = pathinfo($_FILES['userfile']['name']);

if($pathinfo['extension'] == 'png') {
    echo "questa è un immagine png";
}
ciao.. non devo recuperare nessun estensione dovrei controllare se l'utente manda l'immagine giusta ed invece se manda un programma (zip,exe,tar,gz,rar) il sistema dice che non può uplodare il file... etc..

come posso fare?

grazie mille e buona serata..
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
è dall'estensione del file che ne riconosci il tipo:

PHP:
    $array_file_consentiti = array('png', 'jpg', 'gif');
    
    $pathinfo = pathinfo($_FILES['userfile']['name']);

    if (!in_array($pathinfo['extension'], $array_file_consentiti)) {

        echo "questo file non è consentito";

    } else {

        echo "ok file corretto";

    }
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.073
1
38
38
Massa, Italy
ok, ma vedendo questo tutorial:
http://www.ebug.it/upload-file-con-php/#more-687

e il codice:

PHP:
$tipo_file = $_FILES['carica_file']['type'];

if ( $tipo_file == "image/jpg" || $tipo_file == "image/gif" || $tipo_file == "image/png" ) {
}else
} else {

echo "Tipo di file non riconosciuto";

}
non era questo?

non ci sto cappendo nulla qual'è il codice giusto.

che dici??

grazie mille e buona notte a domani..

caoo.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Va bene anche quello ma hai messo un else di troppo

PHP:
$tipo_file = $_FILES['userfile']['type'];

if ($tipo_file == "image/jpg" || $tipo_file == "image/gif" || $tipo_file == "image/png") {
    
} else {

    echo "Tipo di file non riconosciuto";
}
e prima lo hai chiamato userfile ora carica_file Attento a mettere sempre lo stesso name che hai dato all'input del form

Buonanotte:fonzie: