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 "<img class="avatar" src="https://cn.gravatar.com/avatar/".$email."?d=404">"; } ?> <script> $(".avatar").error(function(){用JQ的方法判断头像是否加载错误来改成默认头像即可 $(this).attr("src","https://www.balrogsxt.com/images/default.png");//this获取当前属性attr替换src的内容 }); </script>
方法2(最有效)
感谢Ibear,直接在d参数后面输出默认头像地址即可
<?php function get_gravatar($email) { $email = md5(strtolower(trim($email))); return "<img class="avatar" src="https://cn.gravatar.com/avatar/".$email."?d=https://www.balrogsxt.com/images/default.png">"; } ?>注意:另外,此方法仅测试是wp远程获取默认头像的,所以本地测试无效!
效果实现了,如果不是做什么大事以上代码即可
8条评论登录后可见