七空幻音LOGO

七空幻音

Gravatar头像判断email是否存在头像(速度不减)2016-01-22 19:54:50

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条评论

    一共 1 页

    评论

    后端语言

      详细图片
      载入中...