2010-11-03 6 views
3

Je travaille donc sur un site Web où les images d'un répertoire sont répertoriées dans un domaine distinct de celui de la base de données/du site Web qui contient le répertoire. La façon dont il a été mis en place, est le nom de famille des familles ainsi que les conjoints premières initiales forment le nom de l'image, de sorte que ...Vérification de la présence d'images sur un domaine distinct

John and Kathy Doe 

correspondrait à l'image:

doe-jk.jpg 

Qu'est-ce que Je veux faire, est dans la logique qui affiche chaque liste de la base de données, il vérifie si cette image existe sur l'autre domaine, quelque chose comme ceci:

$picture_name = "http://totally-different-domain.com/".$file_name; 
    if (isset($picture_name)) 
    { 
     echo $picture_name; 
    } 
    else 
    { 
     echo 'empty.jpg'; 
    } 

est-ce que tout le mon y sais comment je peux le faire quand les fichiers existent sur des domaines distincts?

EDIT: Ce que je veux dire par des domaines distincts, est que le script existe à http://domain1.com/directory.php, et l'image qui est inclus dans directory.php est à http://totally-different-domain.com/doe-jk.jpg

Répondre

10

Vous pouvez vérifier si un fichier existe sur un autre domaine par en utilisant la fonction get_headers et en vérifiant si vous avez un 404. Ex.

$url = 'http://totally-different-domain.com/doe-jk.jpg' 
$response = get_headers($url, 1); 
$file_exists = (strpos($response[0], "404") === false); 
+0

Cela ne semble pas fonctionner avec les répertoires: la réponse est 404 même si le répertoire existe. – WoodrowShigeru

2

is_readable() vérifie à la fois l'existence et la lisibilité.

$picture_name = "http://totally-different-domain.com/".$file_name; 
if (!is_readable($picture_name)) { 
    $picture_name = 'empty.jpg'; 
} 
echo $picture_name; 
+0

Notez que selon [is-readable # 61293] (http://php.net/manual/fr/function.is-readable.php#61293), 'is-readable' peut retourner la valeur true même pour les erreurs HTTP (par ex. 500, 403 etc.). Je n'ai pas vérifié cela mais vous devrez peut-être utiliser la solution @ jhchen avec une liste blanche de code d'état (2 **, 301 etc.) au lieu d'une liste noire (404). –

Questions connexes