Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    330

    Controllare le immagini di un solo formato

    Salve,come faccio a controllare che un immagine sia di un solo formato e cioè JPG?Qui c'è il codice, ma nn mi fa inserire neanche un'immagine JPG...AIUTOOOOOOOOOOOOOOOOOO COME SI FAAAA???

    $type=$_FILES['file']['type'];
    if($type != "image/.JPG") {
    $errors[] = 'L\'immagine deve essere del formato .JPEG';
    }

    N.B:in file c'è l'iimagine che ho caricato.


    GRAZIE E

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    se avessi usato la ricerca del forum avresti trovato un sacco di risposte al tuo quesito.

    Comunque l'unico controllo possibile è quello sull'estensione, una cosa + o - cosi:

    codice:
    $info_img = getimagesize($_FILES['file']['tmp_name']);
    
    $estensione = $info_img[2];
    
    if($estensione == 'jpg') {
      echo "ok";
    
    } else {
      echo "formato non valido";
    }

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    if( $_FILES['file']['type']!= "image/pjpeg " ) {

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Teuzzo
    if( $_FILES['file']['type']!= "image/pjpeg " ) {
    Il $_FILES['file']['type'] viene fornito dal browser, e ogni browser invia la stringa che gli pare, ecco perchè si consiglia di controllare l'estensione.

  5. #5
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Mi sembra che explorer fornisca image/pjpeg mentre firefox image/jpeg, basta metterli entrambi nel controllo.
    Un po' come jpg o JPG.
    Si può controllare anche l'estensione, però se qualcuno cambia l'estensione ad esempio di un .exe impostando .jpg te lo caricherebbe comunque.

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    e se uso opera?
    e se domani esce un nuovo browser?

    Devo stare dietro all'applicazione ogni volta che uno usa un browser diverso..

    Certo non è un controllo di sicurezza, ma almeno limita i danni.

    Anche con il filetype hai lo stesso problema, perchè proprio il browser invia la stringa quindi puoi fargli mettere come attributo "image/jpeg" anche se invii un exe.

    Solo che cosi funziona solo con i browser che tu hai contemplato, nell'altro modo funziona sempre.

    per il discorso di JPEG e jpeg esiste la funzione strtolower.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Non mi sembra che esistano altri filetype per il jpeg, in ogni caso basta metterle tutte.
    Così come dovrai mettere tutte le possibili estensioni jpeg: jpg, jpeg, jpe, jfif, ...
    e se domani qualcuno si sogna di inventarsi un'altra enstensione jpeg la dovremo aggiungere alla nostra applicazione.

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    fai un po' come ti pare.

    magari vai a vedere le discussioni sull'argomento, cosi ti rendi conto come la pensano tutti gli altri che hanno affrontato questa cosa.

    Hai idea di quanti browser esistano?

    Ma poi è una cosa di logica.

    Il numero di estensioni è sempre minore rispetto al numero di browser esistenti.

    E poi in genere le estensioni sono una cosa che può capire anche l'utente, volendo puoi dare un interfaccia all'utente per specificare le estensioni accettate, prova invece a dargli un'interfaccia che gli permetta di inserire la stringa inviata dal browser.

    Ciao

  9. #9
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Originariamente inviato da gianiaz
    Hai idea di quanti browser esistano?
    Molti, ma mi risulta che tutti hanno image/jpeg tranne explorer che ha image/pjpeg.
    Forse esiste anche un image/jpe ma non sono sicuro.

    La cosa più semplice è mettere un array nel file di configurazione
    $allowed_types = array("image/pjpeg","image/jpeg","image/jpe") e fare il confronto su di esso.
    Se domani Pinco Pallino si inventerà un nuovo browser con un altro mime-type (image/jppinco) basterà mettere $allowed_types = array("image/pjpeg","image/jpeg","image/jpe","image/jppinco").

    La stessa cosa si può fare col tuo sistema: $allowed_types = array("jpeg","jpg","jpe",...).
    Se domani qualcuno si inventa un'estensione nuova la aggiungi all'array.

    I due metodi ottengono lo stesso risultato e hanno gli stessi inconvenienti, io preferisco il filetype, tu preferisci l'estensione.
    C'è da dire però che è molto più semplice cambiare l'estensione di un .exe che cambiare il mime-type che invia il browser.

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il punto è che è sicuramente + variabile il numero dei browser che quello delle estensioni, comunque come dici tu degustibus, io rimango della mia idea

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 © 2024 vBulletin Solutions, Inc. All rights reserved.