Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611

    evitare che $_FILES mi dia sempre array

    ciao

    la variabile $_FILES mi restituisce sempre un array anche quando il post/get non invia niente...

    di conseguenza se faccio ad esempio un if così...

    if($_FILES['var'] != ""){
    fai questo....


    o c'è o non c'è il file viene sempre verificata... come posso evitare che se non gli passo niente non mi deve restituire niente?

    spero di essermi spiegato

    grazie
    NON ABBANDONATE CANI O GATTI!!!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    io di solito faccio questo controllo:

    codice:
    if(isset($_FILES['var']) && $_FILES['size']) {
    
    }
    cosi controllo sia che sia stato compilato il campo sia che il file non abbia dimensioni = 0.

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    bè a limite andrebbe scritto così...

    $_FILES['var']['size']

    comunque salta lo stesso il passaggio

    :master:
    NON ABBANDONATE CANI O GATTI!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    ho provato così e ora va...

    if(($_FILES['foto']['tmp_name'] != "") && (!isset($_FILES['foto']['size']))){


    grazie comunque per il consiglio sul controllo della dimensione



    P.S.: se dovessero esserci metodi più rapidi sono ben accetti nuovi consigli
    NON ABBANDONATE CANI O GATTI!!!

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    si, vabbè c'era un errore di battitura, ma deve funzionare, ed è pure più corretto, perchè tu innanzi tutto testi se esiste la variabile, poi ne controlli il contenuto.

    Puoi controllare il size come faccio io (se vale 0 è come dire che non è stato inserito un file), oppure controllare che ci sia il nome.

    Se però tu vuoi essere sicuro che ti abbiano inserito un file valido meglio controllare il size perchè qualcuno potrebbe fare l'upload di un file di 0 byte.


  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    si si infatti utilizzerò anche il tuo sistema
    NON ABBANDONATE CANI O GATTI!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    c'è un piccolo problema...

    se io passo in $_FILES valori tramite un singolo <input type='file' />

    va tutto bene

    però se passo dei valori in quest'altro modo <input type="file" name="foto[]" />

    il problema si ripresenta, se qualcuno si sta chiedendo perchè utilizzo foto[], è perchè ho un sistemino in js che mi permette di aggiungere nuovi input file...

    ho notato una cosa... se stampo il contenuto dell'array del primo $_FILES ottengo questo...

    Array (
    [name] =>
    [type] =>
    [tmp_name] =>
    [error] => 4
    [size] => 0
    )

    con il secondo invece ottengo questo...

    Array (
    [name] => Array ( [0] => [1] => )
    [type] => Array ( [0] => [1] => )
    [tmp_name] => Array ( [0] => [1] => )
    [error] => Array ( [0] => 4 [1] => 4 )
    [size] => Array ( [0] => 0 [1] => 0 )
    )

    quindi tutti i controlli si rivelano nulli perchè ho sempre un valore sia in tmp_name, name, size

    come si potrebbe ovviare a questo? se si può!

    grazie
    NON ABBANDONATE CANI O GATTI!!!

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    basta che fai un ciclo for.

    $numero_campi = count($_FILES['var']['size']);

    for($i = 0; $i < $numero_campi; $i++) {
    if($_FILES['var']['size'][$i]){
    // fai cio che vuoi .
    }
    }

    ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    non mi sono spiegato bene oppure non ho capito il tuo consiglio...

    praticamente mi trovo in questa situazione...

    Codice PHP:
    if(isset($_FILES['foto']))
      
    $foto $_FILES['foto'];
    else
      
    $foto "";

      if(
    $_FILES['foto']['size'] != ""){
        --> 
    fai quello che dico
      
    }
      else
        --> 
    esci 
    dato che i file sono array (contengono + variabili) e $foto è a sua volta un array, il controllo sulla dimensione o sul percorso del file mi restituisce sempre un valore... io voglio beccare uno dei valori che mi restituisce e confrontarlo per vedere come procedere nel ciclo

    spero di essermi spiegato...
    grazie..
    NON ABBANDONATE CANI O GATTI!!!

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    porca miseria ma lo leggi quello che ti scrivo?

    $_FILES verra riempito sempre allo stesso modo, solo che accedendo a $_FILES['foto']['size'] anzichè ottenere il valore delle dimensioni del file otterrai un array di dimensioni, messe in ordine a seconda dell'ordine in cui li hai messi nella pagina.

    Cosi se hai 3 elementi dovrai controllare che ognuno dei tre elementi sia diverso da zero:

    $_FILES['foto']['size'][0]
    $_FILES['foto']['size'][1]
    $_FILES['foto']['size'][2]

    Capito?

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.