排行榜 统计
  • 建站日期:2017-05-08
  • 文章总数:446 篇
  • 评论总数:6365 条
  • 分类总数:25 个
  • 最后更新:9月17日

typecho通过qq邮箱显示k值qq头像,且不暴露QQ号

本文阅读 1 分钟
广告

参考文章:获取QQ头像地址,并且不暴露QQ号
实现原理是获取json数据进行分割得出k值再进行重组,比较简单。
第一种实现

function Authorimg($email)
{
    $a='cdn.v2ex.com/gravatar';//gravatar头像源
    $b=str_replace('@qq.com','',$email);//替换qq邮箱
    if(stristr($email,'@qq.com')&&is_numeric($b)&&strlen($b)<11&&strlen($b)>4){
        $nk = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$b;//qq头像api
        $q = file_get_contents($nk);//读入文件
        $q = json_encode($nk);//编码json
        $k = explode("&k=",$q)[1];//分割出k值
        echo 'https://q.qlogo.cn/g?b=qq&k='.$k.'&s=100';//重组
    }else{
        $email= md5($email);
        echo 'https://'.$a.'/'.$email.'?';
    }
}

第一种方法实际使用貌似会影响效率,实测加载比较慢,于是就研究了下,得出第二种方法,获取HTTP请求所发送的标头的数组,不用读入整个文件不会影响效率。
好的实现方法

function Authorimg($email)
{
    $a='cdn.v2ex.com/gravatar';//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 Authorimg($comments->mail); ?>

效果图
效果图

您的大名:
万水千山总是情,给个打赏行不行。 打赏
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/1566/
风华雨声:金莲篇
« 上一篇 02-24
typecho获取当前作者的全部评论
下一篇 » 03-03
广告

发表评论

V注册会员 L评论等级
R2 条回复
  1. 哈哈Lv.1 说道:
    2020-08-02     Win 10 /    Chrome

    支持一下

  2. 不暇VLv.6 说道:
    2020-02-29     Linux /    Chrome

    这个方法很好啊,完全规避了QQ泄露的问题,我博客也用一下 icon_mrgreen.gif

没有更多评论了