Как определить перенаправление страницы с помощью PHP?


Я пытаюсь определить, существует ли изображение на удаленном сервере. Тем не менее, я попробовал несколько методов и не могу заставить ни один из них работать.

Прямо сейчас я пытаюсь использовать это:

if (!CheckImageExists("http://img2.netcarshow.com/ABT-Audi_R8_2008_1024x768_wallpaper_01.jpg")) {
    print_r("DOES NOT EXIST");
} else {
    print_r("DOES EXIST");
};

function CheckImageExists($imgUrl) {
    if (fopen($imgUrl, "r")) {
        return true;
    } else {
        return false;
    };
};

Но он возвращает "истину" независимо от того, существует ли изображение на самом деле или нет (вышеприведенное изображение должно, но измените его на тарабарщину, и оно все равно вернет "истину"). У меня такое чувство, что это может быть потому, что если URL-адрес не существует, он перенаправляется на главную страницу сайта. Но я не знаю, как обнаружить тот.

Спасибо за любую помощь!

Author: blabus, 2010-05-20

4 answers

Использовать Завиток.

После извлечения ресурса вы можете получить код ошибки, вызывающий curl_errno().

 2
Author: Seb, 2010-05-20 17:19:41

Скорее всего, вы возвращаете HTML-страницу в свой файл $IMGURL, который содержит "изображение 404 не найдено" или что-то подобное.

Вы должны иметь возможность проверить ответ на наличие кода, указывающего, что запрос не удался или перенаправлен.

 0
Author: NibblyPig, 2010-05-20 17:17:37

Это должно сработать (используя размер изображения):

if (!CheckImageExists("http://www.google.com/intl/en_ALL/images/srpr/logo1w.png")) {
    echo 'DOES NOT EXIST';
} else {
    echo 'DOES EXIST';
};

function CheckImageExists($imgUrl) {
    if (@GetImageSize($imgUrl)) {
        return true;
    } else {
        return false;
    };
};
 0
Author: Codex73, 2010-05-20 17:35:45

Заставил его работать с помощью метода Себа. Просто использовал YQL для проверки фактического содержимого страницы и определения, является ли это ошибкой или нет.

 0
Author: blabus, 2010-05-20 21:07:53