2009-02-06 5 views
0

J'essaie de voir si une URL existe ou non, et si elle n'existe pas, réinitialiser la variable contenant l'URL à une page/image d'erreur. Cependant, ma tentative ci-dessous définit chaque instance de PIC_URL sur noimage.gif, qu'elle existe ou non et qu'elle soit accessible ou non. Qu'est-ce que je rate?Erreur d'URL de l'image rattraper le problème

if (@fopen($_REQUEST[$PIC_URL],"r")) 
{ 
$status = "1"; 
} 
else if (!(@fopen($_REQUEST[$PIC_URL],"r")) 
{ 

$status = "2"; 
} 

if ($status == "2") $PIC_URL = "http://www.tricityhomes.com/assets/images/noimage.gif"; 

Répondre

0

Le test de la part d'autre semble redondante, et avez-vous dire $_REQUEST['PIC_URL']?

if (@fopen($_REQUEST['PIC_URL'],"r")) 
{ 
    $status = "1"; 
} 
else 
{ 

    $status = "2"; 
} 

Cependant, il y a beaucoup plus de problèmes. Pour tester si un fichier distant existe, vous feriez mieux d'utiliser file_exists, ou même de lancer votre propre méthode pour effectuer une requête HEAD.

+0

Cela définit toujours chaque image à l'image non existante. Pourquoi ferait-il ça? –

+0

Je supprimerais le @ afin que vous voyiez les erreurs et que vous renvoyiez l'URL à la recherche pour vous assurer que vous demandez ce que vous pensez demander. –

0

utilisation file_exists ou is_readable, et ne pas utiliser la valeur brute

1

Vous pouvez essayer de faire quelque chose de similaire à ce

<?php 
function url_exists($url) { 
    // Version 4.x supported 
    $handle = curl_init($url); 
    if (false === $handle) 
    { 
     return false; 
    } 
    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox 
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    $connectable = curl_exec($handle); 
    curl_close($handle); 
    return $connectable; 
} 
?> 

Source: http://uk.php.net/manual/en/function.file-exists.php#85246

l'être raison en est que, comme il a été mentionné vérification par rapport à la valeur brute de fopen n'est pas la meilleure idée et également cette méthode ne tient pas compte d'être redirigé vers des pages d'erreur, etc.

Questions connexes