【发布时间】:2014-09-17 15:39:05
【问题描述】:
我想在代码运行时检查托管在另一个站点/服务器上的图像是否存在。为此,我使用的 JavaScript 可以很好地满足我在下面分享的愿望。但是有些浏览器不支持 JavaScript 或者有些用户正在使用阻止扩展来阻止 JavaScript,所以当时我的代码确实运行了。
<script type='text/javascript'>
var url = 'http://www.example.com/example.jpg';
var img = new Image();
img.src = url;
img.onload = function()
{
alert('Image Is Available')
}
img.onerror = function()
{
alert('Image Is Not Available')
}
</script>
所以现在我想通过纯 PHP 执行与上述代码相同的操作。我不想使用fsockopen、file_get_contents、curl、get_headers 选项来点击和检查服务器。我只想点击图像并像上面一样检查。为此,我使用了以下代码,但它不起作用。它显示Image Is Not Available,即使我能够直接在浏览器中打开图像。我在网上找到了这段代码。
<?php
$url = 'http://www.example.com/example.jpg';
if (@GetImageSize($url)) {
echo "Image Is Available";
} else {
echo "Image Is Not Available";
}
?>
那么这段代码的错误是什么?能不能提一下解决...???
更新:请不要提及图像加载时间或大小,因为我在目标上点击favicon.ico 或其他小尺寸图像。
重要问题:我在另一个目标上检查了上面的 PHP 代码,它运行良好。但是我想检查图像的地方不起作用。我的目标不包含域,它的 IP 地址类似于hhtp://XX.XX.XX.XX:XXXX/example.jpg。所以代码是正确的,但我的目标没有回复任何外部代码命中。当我直接在浏览器中打开链接时,它会显示图像。所以我的这个问题也包含答案。我将就我的新问题提出另一个问题。
【问题讨论】:
-
在
getImageSize()之前删除@。另外:php.net/manual/fr/function.file-exists.php -
你为什么不想使用
file_get_contents?如果你使用它,你可以简单地检查魔术变量http_response_header,它将包含一个标题数组,包括一个错误代码(302 或 404 或其他)。对此不会有完美的解决方案,因为服务器可以根据需要响应您的请求,包括根本不响应。您可以做的最好的事情是查看服务器返回的标头。一个有用的标题是Content-Type: image/jpeg。 -
allow_url_fopen 开启了吗? (见 phpinfo())
-
@djidi 按照您的提示后仍然无法正常工作...
-
@PascalOckert 是的,它在...
标签: javascript php image