Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    28

    problema con l'if e operatori

    salve a tutti non capisco come mai non mi funziona questa condizione.Io vorrei che se l'estensione del file fosse diverso da png, gif, jpg il file non venisse caricato... ma mi dice sempre non caricato che sia tra png,gif,jpg o no mi da sempre esetensione non consentita.
    Come mai ?



    $estensione = pathinfo($nomefile);
    if($estensione['extension']!="png" || $estensione['extension']!="gif" || $estensione['extension']!="jpg"){
    echo "estensione non consentita ".$estensione['extension'];
    exit;
    }

    if (!file_exists("upload/".$nomefile)) {
    file_put_contents("upload/".$nomefile, $streamdati);
    echo "Il file <a href=\"upload/".$nomefile."\">" .$nomefile. "</a> e\' stato copiato sul server

    ".$estensione['extension'];
    }else{
    echo "il file esiste".$estensione['extension'];
    }

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Non ci va OR, ma AND

    if($estensione['extension']!="png" && $estensione['extension']!="gif" && $estensione['extension']!="jpg"){

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    28
    ma se ci metto and e non or vuol dire che per soddisfare la condizione l'estensione deve essere sia gif jpg png ed è impossibile o sbaglio io?

  4. #4
    Originariamente inviato da bhoo
    ma se ci metto and e non or vuol dire che per soddisfare la condizione l'estensione deve essere sia gif jpg png ed è impossibile o sbaglio io?
    Veramente nella condizione hai il NOT!
    Per cui per soddisfare la condizione l'estensione NON deve essere gif, jpg e png
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Ma tu stai usando il NOT.
    Se per esempio l'estensione è png, la prima è falsa, ma le altre sono (per forza) vere.
    Con l'or, ne basta una vera per entrare nel if

    Volendo fare con OR, dovresti fare
    if(!($estensione == "png" || $estensione == "jpg" || $estensione == "gif")){
    // Non permesse
    }

    PS: se vuoi fare una cosa più carina, fai

    $allow_ext = array('jpg', 'png', 'gif');
    if(!in_array($estensione, $allow_ext)){
    // Non permesse
    }

    In questo modo, ti resta più semplice togliere/aggiungere le estensioni...che magari poi riprendere da un file di configurazione

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    28
    Originariamente inviato da satifal
    Veramente nella condizione hai il NOT!
    Per cui per soddisfare la condizione l'estensione NON deve essere gif, jpg e png
    esatto infatti io voglio che SE NON è una di quell'estensioni termini l'esecuzione dello script, ma non succede o meglio mi dice in ogni caso estensione non consentita.

  7. #7
    Originariamente inviato da bhoo
    esatto infatti io voglio che SE NON è una di quell'estensioni termini l'esecuzione dello script
    Allora "sei de coccio" come si dice a Roma!
    boots ti ha già fornito la soluzione!!!

    Se l'estensione è DIVERSA da gif E(AND) è DIVERSA da jpg E(AND) è DIVERSA da png allora esci!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    28
    Originariamente inviato da boots
    Ma tu stai usando il NOT.
    Se per esempio l'estensione è png, la prima è falsa, ma le altre sono (per forza) vere.
    Con l'or, ne basta una vera per entrare nel if

    Volendo fare con OR, dovresti fare
    if(!($estensione == "png" || $estensione == "jpg" || $estensione == "gif")){
    // Non permesse
    }

    PS: se vuoi fare una cosa più carina, fai

    $allow_ext = array('jpg', 'png', 'gif');
    if(!in_array($estensione, $allow_ext)){
    // Non permesse
    }

    In questo modo, ti resta più semplice togliere/aggiungere le estensioni...che magari poi riprendere da un file di configurazione
    io l'ho scritta così ma mi da sempre non consentita qualsiasi file sia:
    $estensione = pathinfo($nomefile); $allow_ext = array('jpg', 'png', 'gif'); if(!in_array($estensione, $allow_ext)){ echo "estensione non consentita ".$estensione['extension']; exit; } if (!file_exists("upload/".$nomefile)) { file_put_contents("upload/".$nomefile, $streamdati); echo "Il file <a href=\"upload/".$nomefile."\">" .$nomefile. "</a> e' stato copiato sul server

    ".$estensione['extension']; }else{ echo "il file esiste".$estensione['extension']; }

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Originariamente inviato da bhoo
    io l'ho scritta così ma mi da sempre non consentita qualsiasi file sia:
    Codice PHP:
    $estensione pathinfo($nomefile); 
    $allow_ext = array('jpg''png''gif'); 
    if(!
    in_array($estensione$allow_ext))
    {
         echo 
    "estensione non consentita ".$estensione['extension'];
         exit; 
     }
     if (!
    file_exists("upload/".$nomefile)) 

    file_put_contents("upload/".$nomefile$streamdati); 
    echo 
    "Il file <a href=\"upload/".$nomefile."\">" .$nomefile"</a> e' stato copiato sul server

    "
    .$estensione['extension']; 
    }else{
     echo 
    "il file esiste".$estensione['extension']; 

    occhio che io ho scritto $estensione per brevità...tu dovresti mettere

    if(!in_array($estensione['extension'], $allow_ext)){

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    28
    grazie boot grazie mille funziona da Dio!!

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.