Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630

    Controllo se siste file img su server remoto

    Carissimi,
    non riesco a capire l'errore, devo controllare se un file immagine è presente su un server remoto.
    Ecco lo script:

    codice:
    $filename = "http://www.miosito.it/cartella/img.jpg";
    
    $controllo = @fopen($filename, 'r');
    if($controllo === FALSE) {
    
    il file non esiste!!
    
    } else {
    
    il file esiste!!
    
    }
    Dove sbaglio?
    Grazie
    G.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Cosa succede eseguendo questo codice? Se non ci dici cosa non va neanche sappiamo dirti la soluzione.
    Sii esplicativo, non rispondere cose tipo "non funziona", spiega un po' che succede.

    E finché il codice non funziona, non usare MAI @, che inibisce i messaggi d'errore e non ti fa capire i problemi.
    Ultima modifica di Alhazred; 20-01-2015 a 19:13

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    non è un errore, forse perchè c'è la @, comunque in pratica anche se il file è esistente la funzione riconosce come non esistente.
    Se tolgo la @ ho questo errore sia che il file esiste che se non esiste:
    codice:
    Warning:  fopen(http://www.miosito.it/cartella/img.jpg) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request  in D:\Inetpub\webs\miosito\index.php on line ---
    
    Grazie

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    L'errore è autoesplicativo:
    400 Bad Request

    The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
    Un modo migliore per fare quello che vuoi fare è utilizzare get_headers() e controllare lo status code della risposta. Se è 404 allora non esiste.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    ho fatto
    codice:
    $filename = "http://www.miosito.it/cartella/img.jpg";
    $header_response = get_headers($filename, 1);
    if ( strpos( $header_response[0], "404" ) !== true ) {
    
    FILE ESISTE
    
    } else {
    
    FILE NON ESISTE
    }
    Se esiste funziona correttamente, ma se il file non esiste ugualmente ho risultato del FILE ESISTENTE
    Grazie
    G.

  6. #6
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Se esiste funziona correttamente, ma se il file non esiste ugualmente ho risultato del FILE ESISTENTE
    Non possiamo fare il debug al posto tuo. Che status ricevi quando esiste e non? Se prima ottenevi un 400, un 400 otterrai ancora adesso. Hai sistemato la richiesta?
    P,s: in questo caso, più che controllare che non esista, conviene controllare che esista (code: 200)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    codice:
    $filename = "http://www.miosito.it/cartella/img.jpg";
    $header_response = get_headers($filename, 1);
    if ( strpos( $header_response[0], "200" ) !== true ) {
    
    echo 'FILE ESISTENTE:<img src="'.$filename.'"/>';
    
    } else {
    
    echo "file non esiste"; 
    
    }
    così dovrebbe farmi vedere a video solo se presente il file immagine.
    Mentre se l'immagine non esiste vedo sia l'img src naturalmente senza immagine senza messaggio "file non esiste"
    Maledizione cosa sbaglio... grazie per l'aiuto.
    G.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    2,630
    Forse ho risolto.....
    ho aggiunto : $filename = str_replace(" ","%20",$filename);
    un replace sugli spazi, perchè i file d'immagine cui effettuavo il controllo contenevano spazi...
    Sembra funzionare il tutto ora, grazie per il momento.

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.