Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Verifica dimensione file dopo upload

    Ciao a tutti.
    Ho creato un controllo (che però non funziona ) affinchè dopo l'upload di un file (mp3) verifichi:
    1. se la dimensione del file non eccede quella limite;
    2. se la dimensiuone del file non eccede quella rimanente disponibile;
    3. se l'estensione del file è mp3

    Qui il codice:
    Codice PHP:
    if (is_uploaded_file($_FILES['mp3']['tmp_name'])){ 
          
                
    # Controllo che il file non superi i KB limite
                
    if ($_FILES['mp3']['size'] > $max_size){ 
            
    header('Location: upload_error.php?error=1'); 
          }
                
                
    # Controllo che il file non superi lo spazio rimanente in KB
                
    if ($_FILES['mp3']['size'] > $remain_space){ 
            
    header('Location: upload_error.php?error=2'); 
          } 
          
                
    # Controllo che il file sia MP3
                
    $estensione substr($_FILES['mp3']['name'], 0, -3);
                if(!
    $estensione == "mp3"){
                    
    header('Location: upload_error.php?error=3');
          }
                
                
    # Creo il nuovo nome del file mp3 che sia funzione di data e ora
            
    $nome_mp3 Date("YmdHis") . ".mp3";
             
            
    # Sposto il file nella cartella da me desiderata 
            
    move_uploaded_file($_FILES['mp3']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/user_mp3/" $ID_user "/" $nome_mp3);
          } 
    Ho fatto tutt ele prove del caso, ma nessuno dei 3 controlli funziona in presenza di un file (volutamente) errato.

    Idee?

  2. #2

  3. #3
    per cominciare prova a scrivere il terzo controllo così
    Codice PHP:
    if($estensione != "mp3"
    Per gli altri 2 prova a sostituirli temporaneamente con
    Codice PHP:
    echo $_FILES['mp3']['size'] . "-" $max_size "-" $remain_space
    per assicurarti che utilizzi la giusta "unità" di misura

  4. #4
    Originariamente inviato da cubalibre810
    per cominciare prova a scrivere il terzo controllo così
    Codice PHP:
    if($estensione != "mp3"
    andava bene anche il suo perchè aveva messo la negazione davanti.

  5. #5
    Utente di HTML.it L'avatar di Cerebro
    Registrato dal
    Jan 2005
    Messaggi
    193
    substr() per prelevare l'estensione è orribile, che succede se l'estensione è .nmp3

    usa pathinfo() e/o basename(), dipende se vuoi fare codice php5 only o php4 compatibilie. pathinfo() ti preleva anche l'estensione in php5, altrimenti in php4 devi usarli entrambi. leggiti il manuale.

  6. #6
    Scusate ragazzi, oggi sono stato impegnato e leggo solo ora le vostre risposte.

    Provo ad effettuare le modifiche e poi vi faccio sapere.

    Grazie per ora.

  7. #7
    Originariamente inviato da m.figus
    andava bene anche il suo perchè aveva messo la negazione davanti.
    Sei sicuro?

  8. #8
    Per iniziare la soluzione di filippo-toso di inserire exit(); dopo ogni Header è vincente.
    Per quanto riguarda il controllo della estensione, ha ragione cubalibre

    Per quanto riguarda l'uso di pathinfo() per ottenere l'estensione del file, il manuale dice Restituisce informazioni su un percorso di file.
    Ma anche in questo caso, che succede se il file caricato ha estensione .nmp3?
    L'elemento $path_parts['extension'] restituirebbe comunque nmp3.
    O sbaglio?

  9. #9
    Utente di HTML.it L'avatar di Cerebro
    Registrato dal
    Jan 2005
    Messaggi
    193
    Originariamente inviato da Dirk Pitt
    Per quanto riguarda l'uso di pathinfo() per ottenere l'estensione del file, il manuale dice Restituisce informazioni su un percorso di file.
    Ma anche in questo caso, che succede se il file caricato ha estensione .nmp3?
    L'elemento $path_parts['extension'] restituirebbe comunque nmp3.
    O sbaglio?
    Allora prima ho deto una cazzata sulle versioni PHP. Questa riga funziona sia con PHP4 che PHP5, è la funzionalità di reperire il solo nome senza estensione che è stato aggiunto in PHP5.

    Codice PHP:
    $estensione pathinfo($_FILES['mp3']['name'], PATHINFO_EXTENSION);

    if( 
    $estensione != 'mp3')
    // ... 
    ti recupera l'estensione, di qualunque lunghezza. nel tuo codice invece recuperava solo gli ultimi 3 caratteri. è la stessa cosa di fare una ricerca a partire dal fondo del " . " e prelevare la parte di stringa alla destra del " . ", ma perchè complicarsi la vita quando esistono funzioni native che lo fanno? e quindi ti consiglio di usare pathinfo()

    riguardo la tua obiezione, il tuo codice recuperava "mp3" ANCHE se l'estensione fosse stata "nmp3" perchè prendeva gli ultimi 3 caratteri.

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.