Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Strano errore con rilevamento dimensioni di un immagine

    Ciao a tutti e buone feste !!!

    Ho un problemino che non riesco a risolvere...

    Voglio caricare un immagine sul server tramite un modulo.
    Fin qui non c'e' problema.

    Gia' che ci sono faccio anche 2 controlli.
    Il primo se e' stato effettivamente riempito il campo nel modulo tramite sfoglia
    il secondo e' che l'immagine non ecceda i 1,4 MB

    Codice PHP:

    <?php

    if(strlen($nome_file $_FILES[(immagine)]['name']) > 0) {
        
        
    // QUI C'E' UN IMMAGINE, ALLORA CONTROLLO SE ECCEDO LA MAX DIM DI 1,4 MB
        
    if($dimensioni_file $_FILES[(immagine)]['size'] > 1420000) {
            
            echo 
    "eccede 1,4 mb..:";
            echo 
    "
    "
    ;
            echo 
    "
    "
    ;

            
    // BACK
            
    echo "<a href=\"inserisci.php\">back..</a>";

        } else {
            
            echo 
    "va benissimo....";
            
        }
        
    } else {
        
        
    // QUI NESSUNA IMMAGINE INSERITA...
        
    echo "inserisci un immagine....";
        echo 
    "
    "
    ;
        echo 
    "
    "
    ;
        
        
    // BACK
        
    echo "<a href=\"inserisci.php\">back..</a>";
            
    }
        
    ?>
    Il modulo da cui ricevo il file e' cosi' composto (molto semplice..):

    Codice PHP:

    <form action="inserisci_temp.php" method="post" name="inserisci_img" enctype="multipart/form-data">
    <
    input type="file" size="34" name="immagine"><input type="submit" name="inserisci_img" value="Inserisci">
    </
    form
    A prima vista potrebbe sembrare funzionare bene...
    Solo che facendo un po' di testing ho trovato uno strano errore:
    se cerco di caricare un file da meno di 1,4 mb non da nessun problema (sto provando con jpg perche' serve per immagini..), come se clicco su invia senza inserire niente mi rende il corretto mex d'errore....Se inserisco un file piu' grosso di 2 MB (occhio e croce...) mi rende l'esatto messaggio di errore (file eccede 1,4 mb..)...E sembra tutto ok....

    Perche' invece, se cerco di inserire file piu' grossi, da, sempre a occhio e croce, 2,8 Mb in su, mi rende lo stesso identico messaggio di come se fosse andato tutto bene (modulo riempito e file da meno di 1,4 MB...) ??!?!?!?!

    Perche' accade cio' ?? :master:

    Che idea vi siete fatti ??

    In ogni caso, BUON NATALE A TUTTI..
    Ciao ciao
    Micky

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    ma perchè dichiari (immagine) così?

  3. #3
    Originariamente inviato da Ranma2
    ma perchè dichiari (immagine) così?
    Come dovrei dichiararla scusa ??
    E cmq anche a dichiararla diversamente non cambia nulla....

  4. #4
    Infatti anche a me il tuo script non sembra precisissimo.
    Io scriverei così:

    Codice PHP:
    <?php 

    if(isset($_FILES['immagine']['name']) { 
         
        
    // QUI C'E' UN IMMAGINE, ALLORA CONTROLLO SE ECCEDO LA MAX DIM DI 1,4 MB 
        
    if($_FILES['immagine']['size'] > 1420000) { 
             
            echo 
    "eccede 1,4 mb..:"
            echo 
    "
    "

            echo 
    "
    "


            
    // BACK 
            
    echo "<a href=\"inserisci.php\">back..</a>"

        } else { 
             
            echo 
    "va benissimo...."
             
        } 
         
    } else { 
         
        
    // QUI NESSUNA IMMAGINE INSERITA... 
        
    echo "inserisci un immagine...."
        echo 
    "
    "

        echo 
    "
    "

         
        
    // BACK 
        
    echo "<a href=\"inserisci.php\">back..</a>"
             

         
    ?>
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    prova così:

    Codice PHP:
    <?php 

    if(strlen($nome_file $_FILES['immagine']['name']) > 0) { 
         
        
    // QUI C'E' UN IMMAGINE, ALLORA CONTROLLO SE ECCEDO LA MAX DIM DI 1,4 MB

        
    $dimensioni_file filesize($_FILES['immagine']['tmp_name']);

        if(
    $dimensioni_file 1420000) { 
             
            echo 
    $dimensioni_file." eccede 1,4 mb..:"
            echo 
    "
    "

            echo 
    "
    "


            
    // BACK 
            
    echo "<a href=\"inserisci.php\">back..</a>"

        } else { 
             
            echo 
    $dimensioni_file." va benissimo...."
             
        } 
         
    } else { 
         
        
    // QUI NESSUNA IMMAGINE INSERITA... 
        
    echo "inserisci un immagine...."
        echo 
    "
    "

        echo 
    "
    "

         
        
    // BACK 
        
    echo "<a href=\"inserisci.php\">back..</a>"
             

         
    ?>
    I Love Paris...

  6. #6
    Ops... scusa alcio74 ..ho stentato a scrivere la risposta..
    I Love Paris...

  7. #7
    Ho provato a chiamarla diversamente ma non cambia nulla !!

    A scrivere (immagine) o ['immagine'] non cambia esattamente nulla nel risultato per ovvi motivi...

    Cioe', a fare esperimenti sono buono anche da solo, io pero' vorrei sapere il perche' mi da quel - non - risultato li.

    Grazie lo stesso

  8. #8
    Originariamente inviato da mgs
    prova così:

    Codice PHP:
    <?php 

    if(strlen($nome_file $_FILES['immagine']['name']) > 0) { 
         
        
    // QUI C'E' UN IMMAGINE, ALLORA CONTROLLO SE ECCEDO LA MAX DIM DI 1,4 MB

        
    $dimensioni_file filesize($_FILES['immagine']['tmp_name']);

        if(
    $dimensioni_file 1420000) { 
             
            echo 
    $dimensioni_file." eccede 1,4 mb..:"
            echo 
    "
    "

            echo 
    "
    "


            
    // BACK 
            
    echo "<a href=\"inserisci.php\">back..</a>"

        } else { 
             
            echo 
    $dimensioni_file." va benissimo...."
             
        } 
         
    } else { 
         
        
    // QUI NESSUNA IMMAGINE INSERITA... 
        
    echo "inserisci un immagine...."
        echo 
    "
    "

        echo 
    "
    "

         
        
    // BACK 
        
    echo "<a href=\"inserisci.php\">back..</a>"
             

         
    ?>
    ..Non mi serve visualizzare i dati in maniera piu' carina...
    E poi, non sono un guru php ma penso sia esattemanente la stessa cosa scrivere:

    Codice PHP:

    // CODICE PIU' PULITO
    if($dimensioni_file $_FILES['immagine']['size'] > 1420000) {

    oppure

    // CODICE UN PO' FAGIANO (TEMP NAME DA DOVE VIENE FUORI) ?!??!?!?!
    $dimensioni_file filesize($_FILES['immagine']['tmp_name']); 

    if(
    $dimensioni_file 1420000) { 
    ecc..ecc... 

    E poi e' esattamente come l'avevo gia' modificato ma il risultato non cambia, se non ci credete provatelo !!

    Grazie cmq.

  9. #9
    allora non saprei aiutarti, quello che ti ho postato io l'ho provato decine di volte in locale, con file che superavano il limite e non, e ha sempre funzionato, si vero che è lo stesso, ma preferisco ordinare meglio il codice, non che il tuo non lo sià....

    bho, forse qualcuno più esperto ci illuminerà, però ripeto a me funziona..
    I Love Paris...

  10. #10
    Vedi.... non trovo sia carino rispondere da "piccato" a persone che provano a darti una mano.

    $_FILES è un array e come tale si scorre utilizzando la sintassi con parentesi quadre e apici singoli.
    Ad una persona che fisicamente non può mettere mano sullo script presente nel tuo PC, il primo errorino (pur stupido) sembra la soluzione al problema.

    Io poi ti avevo segnalato (per il controllo sul fatto che il file fosse stato caricato o meno nella form) isset. [LINK ]
    Ti snellisce il codice e peraltro è sempre utilizzato proprio per controllare se una variabile passata da form esiste o meno
    In ultimo, trovo inutile andare ad associare una variabile quando non ce ne è bisogno.
    Ripeto, lo script funziona lo stesso ma si segnalano certe cose per provare a migliorare il tutto.

    Codice PHP:
    if(isset($_FILES['immagine']['name']) {
    // codice
     

    Il tuo problema forse, sta nel modo in cui viene trattato il numero che viene restituito da filesize().
    Ti riporto il link a quella che dovrebbe essere la Bibbia di ogni sviluppatore PHP: il manuale su php.net => filesize().

    Prova quindi questo codice.

    Codice PHP:
    // ometto quanto scritto prima.
    $dimensioni_file sprintf("%u"filesize($_FILES['immagine']['tmp_name']));

    if(
    $dimensioni_file 1420000) {
    // ometto quanto scritto dopo 
    Con questo metodo, il numero che ti ritorna la funzione FILESIZE viene castato a intero.... così sei sicuro che il controllo successivo funzioni.

    Ora fa qualche prova e poi facci sapere.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.