• User Attivo

    Limiti per upload immagini

    Ciao, ho creato un form per caricare un immagine in una directory. Solo che è molto base, senza nessuna restrizione. Ecco il codice:

    if (isset($_POST['submit']))

    {
    $validator = Validator::make(
    array(
    'title' => $_POST['title'],
    'question' => $_POST['question'],
    ),
    array(
    'title' => 'required',
    'question' => 'required',
    )
    );

    if ($validator->fails())
    {
    	$errors = $validator->messages();
    }
    else
    {
    
    
        $random = rand(00000000,99999999);
        $filename = addslashes($random. '_' .$_FILES["img"]["name"]);
        $tmpFilename = $_FILES["img"]["tmp_name"];
        $path = "http://www.giorgiotave.it/forum/images/" . $filename;
        
        if(is_uploaded_file($tmpFilename)){ // check if file is uploaded 
            if(move_uploaded_file($tmpFilename, $path)){ // now move the uploaded file to path (directory) 
            } 
        }  
        
    	DB::table('questions')->insert(
    	    array(
                'h_image' => escape($filename), 
    	    	'h_title' => escape($_POST['title']), 
    	    	'h_desc' => escape($_POST['question']),
                'page_title' => escape($_POST['title']), 
                'user_id' => escape($_POST['userid'])
    	    )
    	);
        return redirect_to('index.php');
    }
    

    }

    Chiedo aiuto a voi per inserire restrizioni come il limite di grandezza, che vengano accettate solo immagini. Inoltre, sono tentato anche di fare in modo che l'immagine caricata venga spostata una versione originale in una cartella, mentre una di grandezza inferiore (con width e height impostati) in un altra.

    Comunque, spero possiate aiutarmi, grazie!


  • User Attivo

    Qui puoi trovare degli spunti (stackoverflow.com/questions/1249943/check-picture-file-type-and-size-before-file-upload-in-php), in particolare dal commento di Andrew Moore:

    [PHP]
    $filecheck = basename($_FILES['imagefile']['name']);$ext = strtolower(substr($filecheck, strrpos($filecheck, '.') + 1));if (!(($ext == "jpg" || $ext == "gif" || $ext == "png") && ($_FILES["imagefile"]["type"] == "image/jpeg" || $_FILES["imagefile"]["type"] == "image/gif" || $_FILES["imagefile"]["type"] == "image/png") && ($_FILES["imagefile"] < 2120000))){ echo "F2"; die();}[/PHP]