Как определить перенаправление страницы с помощью 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-адрес не существует, он перенаправляется на главную страницу сайта. Но я не знаю, как обнаружить тот.
Спасибо за любую помощь!
4 answers
Использовать Завиток.
После извлечения ресурса вы можете получить код ошибки, вызывающий curl_errno().
Скорее всего, вы возвращаете HTML-страницу в свой файл $IMGURL, который содержит "изображение 404 не найдено" или что-то подобное.
Вы должны иметь возможность проверить ответ на наличие кода, указывающего, что запрос не удался или перенаправлен.
Это должно сработать (используя размер изображения):
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;
};
};
Заставил его работать с помощью метода Себа. Просто использовал YQL для проверки фактического содержимого страницы и определения, является ли это ошибкой или нет.