[Typecho]更换头像源及显示QQ显示头像

本文介绍如何解决cn.gravatar.com访问问题,使用国内镜像加速头像加载,并通过修改代码直接从QQ号获取QQ头像,适用于使用QQ邮箱作为账户的用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过访问cn.gravatar.com多次未果,于是了解到国内它的镜像站,可以更快速的获取头像(但我还是没有官网账号),以及通过QQ号得到QQ头像[1]。虽然这篇文章给出了一位开发者的github链接[2],但是经过查看源码,并未发现实现QQ头像获取的功能,并且因为很久没有维护,code里支持的某一个镜像也失效,因此我便稍微修改一下,不要在意效率。

镜像源

首先是修改失效的镜像,将第52行code修改为

'https://cdn.v2ex.com/gravatar/'   =>  '国内镜像 ( https://cdn.v2ex.com/gravatar/ )'),

其中56行之后的那一堆默认头像的地址可以选择性修改一下。

QQ头像

然后参考了一篇文章[3],得到了从qq号获取头像地址的php代码。因为上面这个插件涉及到返回头像地址的功能,所以直接在这个插件里动刀。那么就通过检测邮箱中的QQ号来得到头像吧。

首先在gravatarUrl函数的起始位置添加一个判断,是否邮箱为qq号形式的邮箱[4]:

// 检测是否是数字类型的QQ邮箱
preg_match('/^\d{4,11}@qq\.com$/i', $mail)

如果是的话,会返回真,否则为假。
接下来当返回为真的时候令函数直接返回QQ头像地址:

if (preg_match('/^\d{4,11}@qq\.com$/i', $mail))
{
    $qq = substr($mail, 0, -7);
    $geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
    $qquser = file_get_contents($geturl);
    $str1 = explode('&k=', $qquser);
    $str2 = explode('&s=', $str1[1]);
    $k = $str2[0];
    $qqimg = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
    return $qqimg;
}

以上是功能的大致实现,具体修改请参照提供下载的插件源码。因为对PHP语言不了解,所以并不确定这种方法是否最佳,修改后的插件仅供参考:GitHub

限制

需要用户邮箱设置为由QQ号组成的的QQ邮箱账号。

参考链接:

  1. https://handsl.cn/338.html
  2. https://github.com/LT21/GravatarServer
  3. https://qqdie.com/archives/get-qq-avatar-no-qq-number.html
  4. https://www.n-1.cn/32.html
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值