bonjour

voila je voudrai savoir comment faire pour savoir si une image distante existe ou non c'est a dire une image sur un autre site exite pour lafficher sur mon site sinon afficher une image de substitution

voici ce ke j'ai commencer a faire, mais si le site distant redirige sur l'erreur 404 ma fonction ne marche pas du coup :

j'ai fais une fonction general et 2 fonctions une qui teste si le fichier distant existe et l'autre la taille.

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function test_image($url)
{
  $vartemp="http://thumbnails.alexa.com/image_server.cgi?size=large&url=$url";
  $tableau = explode("/",$url);
   $fichier=$url."/ascreen.jpg";
   if(isset($tableau[3]))
   {
      $fichier=$url."ascreen.jpg";
   }
 
  if(remote_file_exists ($fichier))
  { 
    $size=taille_fichier($fichier);
    if(($size)<=4000)
    {
 
     return ($fichier);
 
    }
    else
    {
      return $vartemp;
 
    }
  }
  elseif(remote_file_exists($vartemp))
  {
     return $vartemp;
  }
}
 
function remote_file_exists ($url)
{ 
 
/* 
   Return error codes: 
   1 = Invalid URL host 
   2 = Unable to connect to remote host
*/    
 
   $head = ""; 
   $url_p = parse_url ($url); 
 
   if (isset ($url_p["host"])) 
   { $host = $url_p["host"]; }
   else 
   { return 1; } 
 
   if (isset ($url_p["path"])) 
   { $path = $url_p["path"]; } 
   else 
   { $path = ""; } 
 
   $fp = fsockopen ($host, 80, $errno, $errstr, 20); 
   if (!$fp) 
   { return 2; } 
   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; 
} 
 
function taille_fichier($url)
{
  $buffer = '';
  if($fd = fopen ($url, "r")) {
    while (!feof($fd)) {
        $buffer .= fgets($fd, 4096);
    }
    fclose ($fd);
  }
  $size = strlen($buffer);
  return $size;
merci par avance