有哪些更好的方法可以检查外部托管的图像文件是否存在?

时间:2015-02-15 01:53:46

标签: php curl fopen

我使用下面的代码并且它为我工作,但我们大多数人都知道我们不能信任fopen,因为它并不总能在外部文件上运行良好。所以我的问题是我可以使用其他方法来检查外部网址是否存在?

我知道可以用cURL来完成,我可以检查图像大小,但我想知道其他编码器如何解决这个问题,以及最好的方法是什么。

必填:如果图片可用,则回显图片代码,如果图片不可用,则回显文本链接代码,如下面的工作示例所示。

<?php
// Set the beyondsecurity.com image URL you want to connect to...
$url = "https://secure.beyondsecurity.com/verification-images/www.largevideotube.com/vulnerability-scanner-2.gif";
// Check to see if the beyondsecurity.com image URL exists by trying to open it for read only..
if (fopen($url, "r")) {
// echo the beyondsecurity.com image link if I was able to open the beyondsecurity.com image URL for read only..
echo '<a href="http://www.beyondsecurity.com/vulnerability-scanner-verification/www.largevideotube.com"><img src="https://secure.beyondsecurity.com/verification-images/www.largevideotube.com/vulnerability-scanner-2.gif" alt="Website Security Test" /></a>';
} else {
// echo a text link if it took to many time to open the file or if it wasn't there at all..
echo '<a href="http://www.beyondsecurity.com/vulnerability-scanner-verification/www.largevideotube.com">Website Security Test</a>';
}
?>

1 个答案:

答案 0 :(得分:-1)

我会发出HTTP请求并检查响应状态代码和响应头。如果您收到200响应,则表示您的请求没问题。您可以检查Content-Type标头以查看内容是否为图像。然后你可以用响应体做任何你想做的事情,对于200响应就是图像。如果您收到4XX或5XX响应,则表示出现问题或无法找到图像。您可以使用cURL或其中一个非常棒的库来制作HTTP请求/响应,例如Guzzle。