Как обнаружить перенаправление страницы с помощью PHP? - PullRequest
3 голосов
/ 20 мая 2010

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

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

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;
    };
};

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

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

Ответы [ 4 ]

2 голосов
/ 20 мая 2010

Использование cURL .

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

0 голосов
/ 21 мая 2010

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

0 голосов
/ 20 мая 2010

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

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 голосов
/ 20 мая 2010

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

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

...