IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Vérifier si une image distante existe


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut Vérifier si une image distante existe
    Bonjour !

    je suis en train de faire un petit moteur de recherche pour un site qui propose plusieurs articles. je recupere donc les articles dans une base de données, et j'aimerais afficher dans la page de résultats les images correspondant a ces articles, or elles sont sur un autre serveur que celui sur lequel sera mon fichier php. Chaque article n'ayant pas forcement une image correspondant, j'aimerais pouvoir tester si l'image existe, et si oui l'afficher, sinon en afficher une autre par défaut.

    j'arrive pas a effectuer ce test, juste savoir si l'image distante existe ou non, comment puis-je faire?

    merci beaucoup de vos réponses !

    Amandine

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Tu peux faire ca avec la fonction is_file

    http://fr.php.net/manual/fr/function.is-file.php

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    Merci !
    je viens d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	if (is_file($lienimage)) {
    	echo "<img src='".$lienimage."' border='0' height='60' width='60'>";
    	}
    mais il me renvoie false a chaque fois, alors que quand je le fais a la main l'image d'affiche :/

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    essaie plutot la fonction file_exists()

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    Oui c'est ce que j'avais fait en premier car c'est la fonction qui me semblait la plus appropriée, mais elle ne me renvoie rien non plus :/

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Personnellement, file_exists ne marche pas non plus avec un fichier distant, je viens de tester les deux...

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux vérifier que allow_url_fopen est bien à on sur le serveur distant en faisant phpinfo().
    Bye

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      $file = fopen("$lienimage", "r");
      if (!$file) {
        echo "<p>Impossible d'ouvrir le fichier distant.\n";
        exit;
      }
    Wala qui devrait marcher

    Edit : ca fonctionne bien, mais j'ai une belle erreur si le fichier n'existe pas...

    Re-Edit: vu que l'erreur est "volontaire", un @ devant la ligne $file = fopen("$lienimage", "r"); corrigera ca, meme si c'est pas très beau comme code...

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    sur le serveur distant? ce n'est pas du php sur le serveur distant :/

  10. #10
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    merci Marc, malheureusement il arrive pas a l'ouvrir (le probleme vient peut etre de la d'ailleurs :/ )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in ...
     
    Impossible d'ouvrir le fichier distant.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Bizarre, je viens de tester en local et ca marche :X

  12. #12
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    ben je suis en local avec easyphp pour les tests, mais je vais essayer sur le serveur peut etre que ca marchera

  13. #13
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    En fait ca dépend surtout de la version de php, jette un coup d'oeil à la fonction url_exists() ici

    Mais de toute façon si t'as une erreur 404 c'est que le fichier n'existe pas ou que t'as mal tapé l'url ^^

  14. #14
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    non, en fait ca marche, même en local : j'ai juste enlevé le "exit;" et mis le @ comme tu m'as dit, car comme c'est une liste d'article, il faut que ca continue ! Et le 2nd article n'a pas d'image justement, donc j'ai regardé trop vite et j'ai cru que ca marchait pas, alors que c'etait juste l'erreur normale

    le seul probleme c'est que ca met enormement de temps pour afficher la liste, vu qu'il faut qu'il ouvre et telecharge chaque fichier image :/

  15. #15
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Si jamais t'as un problème une fois que t'auras mis ton site en ligne, sur le serveur distant, oublies pas de vérifier allow_url_fopen

  16. #16
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    d'accord merci

    sinon, c'est la seule solution? car c'est dommage de charger toutes les images quand on veut juste voir si elles existent, non?

  17. #17
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    je viens de voir la fonction url_exists dans les comentaires, donc je retire ma question au dessus et je teste ca, merci beaucoup

    Amandine

  18. #18
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    mmh, ca met quand meme autant de temps que la solution de marc, il me semble.
    c'est mieux que rien, c'est vrai, mais ca reste dommage de tout charger

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Essaie ces deux, je ne sais pas si le serveur devra charger totalement le fichier avec ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?
    function remote_file_exists ($url)
    {
     
    $head = "";
    $url_p = parse_url ($url);
     
    if (isset ($url_p["host"]))
    { $host = $url_p["host"]; }
    else
    {}
     
    if (isset ($url_p["path"]))
    { $path = $url_p["path"]; }
    else
    { $path = ""; }
     
    $fp = fsockopen ($host, 80, $errno, $errstr, 20);
    if (!$fp)
    {}
    else
    {
    $parse = parse_url($url);
    $host = $parse['host'];
     
    fputs($fp, "HEAD ".$url." HTTP/1.1\r\n" );
    fputs($fp, "HOST: ".$host."\r\n" );
    fputs($fp, "Connection: close\r\n\r\n" );
    $headers = "";
    while (!feof ($fp))
    { $headers .= fgets ($fp, 128); }
    }
    fclose ($fp);
    $arr_headers = explode("\n", $headers);
    $return = false;
    if (isset ($arr_headers[0]))
    { $return = strpos ($arr_headers[0], "404" ) === false; }
    return $return;
    }
     
    /* utilisation */
    $url = "http://www.google.it/intl/it_it/images/logo.gif";
    if (remote_file_exists ($url))
    { print ($url . " file exists!" ); }
    else
    { print ($url . " file doesn't exist!" ); }
     ?>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function remote_file_exists ($url)
    {
        ini_set('allow_url_fopen', '1');
        if (@fclose(@fopen($url, 'r'))) {
            return true;
        } else {
            return false;
        }
    }

  20. #20
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    Merci Marc !

    je viens d'essayer et c'est le meme temps pour toutes les solutions, meme les 2 derniers. j'ai meme une belle fatal error a la fin pour avoir excedé 30 secondes de traitement. c'est pas grave car je vais paginer les resultats, mais ca reste très lent tout de meme.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/04/2014, 12h50
  2. Vérifier si une image existe
    Par mika0102 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/01/2008, 13h14
  3. Vérifier si image distante existe
    Par Guilhem_mdg dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2007, 15h30
  4. Vérifier si une image existe
    Par kevinf dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2007, 12h21
  5. Tester si une image distante existe
    Par xtaze dans le forum Langage
    Réponses: 27
    Dernier message: 06/01/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo