2010-11-03 2 views
3

Итак, я работаю на веб-сайте, где изображения для каталога перечислены в отдельном домене, чем база данных/веб-сайт с каталогом. Как это было создано, это фамилия семьи плюс супруги первые инициалы составляют имя изображения, так что ...Проверка наличия изображений в отдельном домене

John and Kathy Doe 

будет соответствовать изображению:

doe-jk.jpg 

Что Я хочу сделать, это в логике, которая отображает каждый список из базы данных, он проверяет, является ли этот образ существует на другом домене, что-то вроде этого:

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

делает anybod y знаю, как я могу это сделать, когда файлы существуют в отдельных доменах?

EDIT: Что я имею в виду отдельных доменов, является то, что сценарий существует на http://domain1.com/directory.php, и изображение, которое включено в directory.php находится в http://totally-different-domain.com/doe-jk.jpg

ответ

10

Вы можете проверить, существует ли файл на другой домен с помощью используя функцию get_headers и проверяя, есть ли у вас 404. Пример.

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

Это не похоже на работу с каталогами: ответ 404, хотя каталог существует. – WoodrowShigeru

2

is_readable() проверяет как на существование, так и на читаемость.

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

Обратите внимание, что согласно [читабельному # 61293] (http://php.net/manual/en/function.is-readable.php#61293) 'is-readable' может возвращать true даже для ошибок HTTP (например, 500, 403 и т. Д.). Я не проверял это, но вам может понадобиться использовать решение @ jhchen с белым списком статуса (2 **, 301 и т. Д.) Вместо черного списка (404). –