Typecho根据访客Email判断是否有Gravatar头像
Typecho是一个什么样的程序,就不多说了,用过的人自然懂。它是一个非常轻巧的博客程序,适合不是很折腾的博主,例如灰狼我。博客自然是有个头像拉风点,评论时可以显示评论者的个性化头像,是一件多么拉风的事情呢,这不,都让IM聊天工具,微博,SNS等给惯出来的习惯。
我使用的博客程序自然是Typecho,不然此文的意义就不大了。本来就有Gravatar头像了,为何还要根据Email来判断呢?大家应该知道的是,Gravatar会根据Email来生成一个头像的地址,而我使用的是“Gravatar头像缓存插件”,访问的Email不一定都注册了Gravatar,所以会返回一个默认的头像,但是由于缓存插件的原因,会生成N个不同地址的默认头像,这时我就纠结了,既然大家都是默认的,为何不使用同个地址呢?
发现问题,自然就要解决问题。于是,开始寻找方法。通过谷歌寻找到了一篇适合我使用的文章【WordPress判断Email是否有Gravatar头像】,判断方法是拿访客的Email进行MD5机密后,再访问Gravatar官网,通过get_headers判断是否存在某些字符,这下完全明白鸟。
看了代码才知道原来很简单的,但是自己却是想不出来的,好吧,代码直接CP过来:
$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没有设置个性化头像的,就全部是同一个默认地址了,而不会是原来的,一个默认头像一个地址,看起来爽一点,适合我这种有洁癖的人。
插件修改后的部分代码如下:
$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';
}
验证方法很简单,打开我的留言板页面,看那些默认头像的地址是不是同一个就知道了。
在此感谢露兜博客!
转载本站原创文章请注明:文章转自 挨踢路,链接: https://888929.tm7j5.group/articles/1824.html
你这个Typecho感觉比一般的要高级,我看他们的都好简单。
Typecho和wp相比,就是贵在简介~~~
是加多了点东西而已吧,内核还是不变
刚过完年就开始研究技术了
看看头像
好像网上有很多的类似教程哦?
这个方法不错,已引入博客中使用,感谢博主分享。
这个方法哦的样子
刚过完年就开始研究技术了
博主能给个QQ吗,有问题想请教
可以通过关于页面的邮箱联系,我随时收到邮件的