Typecho根据访客Email判断是否有Gravatar头像

Typecho是一个什么样的程序,就不多说了,用过的人自然懂。它是一个非常轻巧的博客程序,适合不是很折腾的博主,例如灰狼我。博客自然是有个头像拉风点,评论时可以显示评论者的个性化头像,是一件多么拉风的事情呢,这不,都让IM聊天工具,微博,SNS等给惯出来的习惯。

我使用的博客程序自然是Typecho,不然此文的意义就不大了。本来就有Gravatar头像了,为何还要根据Email来判断呢?大家应该知道的是,Gravatar会根据Email来生成一个头像的地址,而我使用的是“Gravatar头像缓存插件”,访问的Email不一定都注册了Gravatar,所以会返回一个默认的头像,但是由于缓存插件的原因,会生成N个不同地址的默认头像,这时我就纠结了,既然大家都是默认的,为何不使用同个地址呢?

发现问题,自然就要解决问题。于是,开始寻找方法。通过谷歌寻找到了一篇适合我使用的文章【WordPress判断Email是否有Gravatar头像】,判断方法是拿访客的Email进行MD5机密后,再访问Gravatar官网,通过get_headers判断是否存在某些字符,这下完全明白鸟。

看了代码才知道原来很简单的,但是自己却是想不出来的,好吧,代码直接CP过来:

$email = 'abc@example.com';  // 要验证的Email地址
$hash = md5(strtolower(trim($email)));
$uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
 echo '没有头像';
} else {
 echo '有头像';
}

由于我是使用了插件,所以我就直接在插件上修改了,在2.0.2的版本上直接修改了,将原来165行的代码放进有头像的判断,没头像的直接定义一个地址,这样子的话,那些Email没有设置个性化头像的,就全部是同一个默认地址了,而不会是原来的,一个默认头像一个地址,看起来爽一点,适合我这种有洁癖的人。

    插件修改后的部分代码如下:

$uri = 'http://www.gravatar.com/avatar/' . $defaultMail . '?d=404';
$headers = @get_headers($uri);
if (!preg_match("|200|", $headers[0])) {
$imgUrl = 'http://x.libdd.com/farm1/19dad8/a3f4acb9/default.jpg';
} else {
$imgUrl = $siteUrl.$path.$defaultMail.'.jpg';
}

验证方法很简单,打开我的留言板页面,看那些默认头像的地址是不是同一个就知道了。

在此感谢露兜博客!

查看 wordpress email gravatar Typecho的相关文章

转载本站原创文章请注明:文章转自 挨踢路,链接: https://itlu.org/articles/1824.html

已有 11 条评论

  1. 你这个Typecho感觉比一般的要高级,我看他们的都好简单。

    1. Typecho和wp相比,就是贵在简介~~~

    2. 是加多了点东西而已吧,内核还是不变

  2. 刚过完年就开始研究技术了

  3. 回复TESTTEST

    看看头像

  4. 好像网上有很多的类似教程哦?

  5. 这个方法不错,已引入博客中使用,感谢博主分享。

  6. 回复嘻嘻嘻嘻嘻嘻

    这个方法哦的样子

  7. 回复嘻嘻嘻嘻嘻嘻

    刚过完年就开始研究技术了

  8. 博主能给个QQ吗,有问题想请教

    1. 可以通过关于页面的邮箱联系,我随时收到邮件的

添加新评论

您好,#请填信息#修改