Gravatar头像判断email是否存在头像(速度不减)
- 2016-01-22 11:54:50
- 幻音い
- 7580
温馨提示: 这篇文章于3301天前编写,现在可能不再适用或落后.
Gravatar头像是很多博客都在使用的一个头像,但是如果一个用户没有该网站的头像呢?而且该头像还需要翻墙才可以注册(好像是吧)。
PHP也可以做到判断头像,但是我查阅了很多相关信息,都得出一个结论,慢。真的很慢,每出现一个评论者就会加载一次。
PHP判断头像存在都是用以下代码实现。
方法1:
<?php
$email = "123456@qq.com";
$md5 = md5(strtolower(trim($email)));
$url = "https://cn.gravatar.com/avatar/".$md5."?d=404";
$headers = get_headers($url);
if (preg_match("/404/", $headers[0])) {
return false;//不存在头像
} else {
return true;//存在头像
}
?>
```以上代码就可以实现判断email是否存在头像的方法,但是这个方法很慢,严重降低了网站的访问速度。
其实要做到显示自己自定义头像很简单,不必要去判断Email是否存在,只需要在头像链接后面加上一个参数即可,再用js或jq获取自定义头像并显示~
<?php
//在头像链接后面加上 ?d=404 即可
function get_gravatar($email) {
$email = md5(strtolower(trim($email)));
return "";
}
?>
<script>
$(".avatar").error(function(){用JQ的方法判断头像是否加载错误来改成默认头像即可
$(this).attr("src","https://www.acgxt.com/images/default.png");//this获取当前属性attr替换src的内容
});
</script>
方法2(最有效)
感谢[Ibear](https://www.acgxt.com/goto.php?url=aHR0cDovL2liZWFyLmZva2l0ZS5jb20=),直接在d参数后面输出默认头像地址即可
<?php
function get_gravatar($email) {
$email = md5(strtolower(trim($email)));
return "";
}
?>
``` 注意:另外,此方法仅测试是wp远程获取默认头像的,所以本地测试无效!
效果实现了,如果不是做什么大事以上代码即可
阁下需要登录后才可以查看评论哦~