我基本上检索用户的gravatar图像,并将其用于我网站上的个人资料。如果用户没有gravatar帐户或电子邮件未分配到其gravatar帐户,则会从gravatar显示默认图像。
我的问题是,如果例如gravatars网站发生故障并且我无法检索用户的图像,那么无论如何在php中我可以查看gravatar是否正在返回图像,如果没有显示某些文本或其他内容?
显然我可以做一个简单的if语句;但是检查PHP是否gravatar正在返回图像是我不确定的。
如果我无法检查是否正在从Gravatar返回图像,那么检查链接是否在线(可访问)就可以了。我想是的。
更新
我忘了提到这是我如何从gravatar中检索图像:
function get_gravatar($email, $s = 50, $r = 'pg')
{
$defaultimage='mm';
$url='http://www.gravatar.com/avatar/';
$url.=md5(strtolower(trim($email)));
$url.="?s=$s&d=$defaultimage&r=$r";
return $url;
}
然后显示我做:
<a href="http://www.gravatar.com" target="_blank">
<img class="profileimgright profileimgframe" alt="Profile Image" src="<?php echo get_gravatar($_SESSION['email'], 180, 'pg') ?>" />
</a>
答案 0 :(得分:3)
虽然这不能回答你的确切问题,但我猜你实际上可能不需要担心你是否从中获取图像,因为你可以告诉Gravatar使用特定图像作为如果他们没有,则为“默认”。这样,您的代码总是调用Gravatar,他们将决定是显示用户的真实图像还是显示指定的默认值。
在http://en.gravatar.com/site/implement/images/上,请参阅“默认图片”部分。
答案 1 :(得分:1)
最简单的方法是检查外部网址上是否存在文件 将通过fopen
<?php
function fileExists($path){
$exists = @fopen($path,"r");
if($exists){
fclose($datei);
return true;
}
return false;
}
?>
然后你可以这样称呼它
<?
$url = get_gravatar($_SESSION['email'], 180, 'pg');
$exists = fileExists($url);
?>
此致
答案 2 :(得分:0)
您可以使用getimagesize检查网址是否返回图片: http://php.net/manual/en/function.getimagesize.php
如果不是,它将返回false。
示例:
$asd = getimagesize('/etc/passwd');//(bool) false
$asd = getimagesize('asd"asd');//(bool) false
$asd = getimagesize('localhost');//(bool) false
$asd = getimagesize("http://google.com/' OR ''='");//(bool) false
$asd = getimagesize('localhost.com');//(bool) false
$asd = getimagesize('https://www.google.co.uk/images/loading.gif');//array(7) (
[0] => (int) 80
[1] => (int) 80
[2] => (int) 1
[3] => (string) width="80" height="80"
[bits] => (int) 7
[channels] => (int) 3
[mime] => (string) image/gif
)
答案 3 :(得分:0)
function gravatar($email, $size = 80, $default_image = 'default', $rating = 'g', $class = '')
{
$gravatar_url = 'http://www.gravatar.com/avatar/';
$gravatar_url .= md5(strtolower(trim($email)));
$gravatar_url .= "?s=$size&d=$default_image&r=$rating";
if ($class !== '')
{
$class = 'class="'.$class.'"';
}
$gravemail = md5( strtolower( trim( $email ) ) );
$gravcheck = "http://www.gravatar.com/avatar/".$gravemail."?d=404";
$response = get_headers($gravcheck);
if ($response[0] != "HTTP/1.0 404 Not Found")
{
return '<img src='.$gravatar_url.' alt="gravatar" width="'.$size.'" height="'.$size.'" '.$class.'>';
}
else
{
return false;
}
}
if(gravatar($youremail))
{
echo gravatar($youremail);
}