如何使用 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; }; };
但无论图像是否实际存在,它都会返回“true”(上面的图像应该,但将其更改为乱码,它仍然会返回“true”)。我有一种感觉,可能是因为如果 URL 不存在,它会重定向到该网站的主页。但我不知道如何检测到这一点。
感谢您的帮助!
I'm trying to detect whether an image exists on a remote server. However, I've tried several methods and can't get any of them to work.
Right now I'm trying to use this:
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; }; };
But it returns 'true' whether the image actually exists or not (the above image should, but change it to gibberish and it still will return 'true'). I have a feeling it could be because if the URL does not exist, it redirects to the homepage of the site. But I don't know how to detect that.
Thanks for any help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 cURL。
获取资源后,调用 curl_errno()< 会得到错误代码/a>.
Use cURL.
After fetching the resource, you can get the error code calling curl_errno().
您可能会在 $imgUrl 中返回一个 HTML 页面,其中包含“404 图像未找到”或类似内容。
您应该能够检查响应中是否有指示请求失败或重定向的代码。
The chances are you are getting a HTML page back into your $imgUrl that contains "404 image not found" or something similar.
You should be able to check the response for a code indicating that the request failed or redirected.
这应该可以解决问题(使用图像大小):
This should do the trick (using image size):
用 Seb 的方法就可以了。只是使用 YQL 检查页面的实际内容并确定它是否有错误。
Got it working with Seb's method. Just used YQL to inspect the actual content of the page and determine if it's an error or not.