因为腾讯留的头像接口有很多,大部分都是需要传入QQ参数,例如:http//q.qlogo.cn/g?b=qq&nk=qq&s=100这个接口,需要跟QQ参数才能显示QQ头像,这样会暴露用户隐私
那么为了安全和隐私,我们需要隐藏这些,腾讯也留了几个不会暴露QQ的接口
比如https://s.p.qq.com/pub/get_face?img_type=3&uin=QQ号会直接返回QQ头像
还有一个QQ互联里面的一个接口
https://ptlogin2.qq.com/getface?appid=1&imgtype=1&uin= QQ号
相比上一个而言这个返回的是json数据,后面即为QQ头像直链
那么我们只需要处理一下评论头像输出过程就好了,咱也用试了好几种方法,图片显示但就是图像不显示跳转后的链接,还是能留下参数信息,
就比如 <img class="uk-border-circle" src="https://s.p.qq.com/pub/get_face?img_type=3&uin=1724417279" src不应该跳成这样么 src="http://thirdqq.qlogo.cn/g?b=sdk&k=33t19Vyq45B8tuI0llEa1w&s=100&t=1623673005"
烦死人,所以,我他妈直接问 柯少 要后台 !!!
修改过程
在主题的function.php中添加以下函数
function Authorimg($email){
$a='gravatar.q6q.cc/avatar';//gravatar头像源
$b=str_replace('@qq.com','',$email);
if(stristr($email,'@qq.com')&&is_numeric($b)&&strlen($b)<11&&strlen($b)>4){
$nk = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$b;
$c = get_headers($nk, true);
$d = $c['Location'];
$q = json_encode($d);
$k = explode("&k=",$q)[1];
echo 'https://q.qlogo.cn/g?b=qq&k='.$k.'&s=100';
}else{
$email= md5($email);
echo 'https://'.$a.'/'.$email.'?';
}
}
然后在评论的位置的头像修改为<?php echo Authorimg($comments->mail); ?>
刷新 f12查看,成功。
可能你会发现,改完页面加载非常的卡, 开桑 也和我说了几种方法,但都有个请求函数或多或少都有点小卡,所以综合考虑下,我还是放弃吧 也没多大事,正经人谁看咱QQ,也说不定还有漂亮妹妹心疼giegie你,加你呢
简单修改一下
public static function getGravatar($email)
{
$b=str_replace('@qq.com','',$email);
if(stristr($email,'@qq.com')&&is_numeric($b)&&strlen($b)<11&&strlen($b)>4){
$nk = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$b;
$c = get_headers($nk, true);
$d = $c['Location'];
$q = json_encode($d);
$k = explode("&k=",$q)[1];
$avatar = 'https://thirdqq.qlogo.cn/g?b=sdk&k='.$k.'&s=640';
}else{
$email= md5($email);
$avatar = 'https://gravatar.q6q.cc/avatar/'.$email;
}
return $avatar;
}
结语
感谢访问强仔博客,希望本文对你有所帮助!
哪天在研究一下,我先下线了。
好东西,我已经在用了。
虽然用不上,但还是来支持一下
谢谢嗷 已经用上了 顺便改了改
加个缓存就可以了。
好卡哎,不知道咋弄,只能不用