如何使用PHP检测页面重定向?

如何使用PHP检测页面重定向?,php,image,file,detect,exists,Php,Image,File,Detect,Exists,我正在尝试检测远程服务器上是否存在映像。然而,我已经尝试了几种方法,但都没有成功 现在我试着用这个: 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($img

我正在尝试检测远程服务器上是否存在映像。然而,我已经尝试了几种方法,但都没有成功

现在我试着用这个:

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; }; }; 如果(!CheckImageExists(“http://img2.netcarshow.com/ABT-Audi_R8_2008_1024x768_wallpaper_01.jpg")) { 打印(“不存在”); }否则{ 印刷品(“确实存在”); }; 函数CheckImageExists($imgUrl){ 如果(fopen($imgUrl,“r”)){ 返回true; }否则{ 返回false; }; }; 但不管图像是否存在,它都会返回“true”(上面的图像应该是,但将其更改为gibberish,它仍然会返回“true”)。我有一种感觉,这可能是因为如果URL不存在,它会重定向到网站的主页。但我不知道如何检测


谢谢你的帮助

您很可能会将包含“404未找到图像”或类似内容的HTML页面返回到$imgUrl中

您应该能够在响应中检查指示请求失败或重定向的代码。

使用

获取资源后,您可以获取调用的错误代码。

这应该可以做到(使用图像大小):


用Seb的方法做的。只是使用YQL检查页面的实际内容,并确定它是否是错误。

您可以通过将URL粘贴到浏览器中轻松验证这一假设(除非您认为PHP正在重定向…但我可以告诉您不是)。哦,我确信它正在重定向-如果图像不存在,它只是重定向到网站的主页。我在上面测试的URL是有效的,你可以自己尝试。我也尝试过这种方法,但是,无论图像是否确实存在,我都会返回一个代码“200”,然后重定向。所以我不知道如何用它来区分两者。代码200表示OK,也就是说它不是404,所以别提了。我看到,如果我请求了一个不存在的页面,我会得到一个有效的页面。鉴于此网站不符合W3C标准(不发送404),您需要手动处理此网站-即检查接收到的内容是否为“自定义”404页面。我也尝试过该方法,但即使存在图像,它也总是返回“false”。我如何检查代码?因为正如我上面所说的,我尝试过的一种方法将返回代码“200”,不管图像是否确实存在,还是不存在,只是重定向了。
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;
    };
};