(新)typecho获取QQ头像,隐藏QQ号
最初想到获取QQ头像地址就是下面这样,当随之而来的问题就是暴露了别人的QQ号码,这点对于保护他人隐私上来说不太好。
国内使用Gravatar的用户很少,所以很多邮箱根本没有注册Gravatar,所以也就没有头像,而国内主流的还是以QQ邮箱为主,今天主要记录将typecho的评论进行邮箱识别,QQ邮箱则调用QQ头像
下面是常规的QQ头像办法
- //获取Gravatar头像 QQ邮箱取用qq头像
- function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array())
- {
- preg_match_all('/((\d)*)@qq.com/', $email, $vai);
- if (empty($vai['1']['0'])) {
- $url = 'https://www.gravatar.com/avatar/';
- $url .= md5(strtolower(trim($email)));
- $url .= "?s=$s&d=$d&r=$r";
- if ($img) {
- $url = '<img src="' . $url . '"';
- foreach ($atts as $key => $val)
- $url .= ' ' . $key . '="' . $val . '"';
- $url .= ' />';
- }
- }else{
- $url = 'https://q2.qlogo.cn/headimg_dl?dst_uin='.$vai['1']['0'].'&spec=100';
- }
- return $url;
- }
这里是暴露QQ号的思路办法
https://qqdie.com/archives/get-qq-avatar-no-qq-number.html
不过现在规则改动过了,我这边改动一下,做个记录,方便修改
- //获取Gravatar头像 QQ邮箱取用qq头像
- function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array())
- {
- preg_match_all('/((\d)*)@qq.com/', $email, $vai);
- if (empty($vai['1']['0'])) {
- $url = 'https://www.gravatar.com/avatar/';
- $url .= md5(strtolower(trim($email)));
- $url .= "?s=$s&d=$d&r=$r";
- if ($img) {
- $url = '<img src="' . $url . '"';
- foreach ($atts as $key => $val)
- $url .= ' ' . $key . '="' . $val . '"';
- $url .= ' />';
- }
- }else{
-
- $qquser = $vai['1']['0'];
- $geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qquser;
- $qqurl = file_get_contents($geturl);
- $str1 = explode('sdk&k=', $qqurl);
- $str2 = explode('&t=', $str1[1]);
- $k = $str2[0];
-
- $url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
-
- }
- return $url;
- }
主要是现在改为了sdk&k=,所以要获取到sdk&k=的值,然后代替qq号来显示
第二种方法:
参考:https://www.ruletree.club/archives/1566/
获取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.veimoz.com/316
4 条评论
7.6k
发表评论
已有 4 条评论
热门文章
自媒体博客Spimes主题45w 阅读
Spimes主题专为博客、自媒体、资讯类的网站设计....
Splity博客双栏主题15w 阅读
仿制主题,Typecho博客主题,昼夜双版设计,可....
vCard主题个人简历主题13w 阅读
一款个人简历主题,可以简单搭建一下,具体也比较简单....
Spzac个人资讯下载类主题12w 阅读
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
自媒体博客Spimes主题424 评论
Splity博客双栏主题191 评论
Spzac个人资讯下载类主题89 评论
Splinx博客图片主题35 评论
Spzhi知识付费社区主题34 评论
三栏清新博客S_blog主题31 评论
vCard主题个人简历主题29 评论
Pure轻简主题29 评论
@jclser
https://cdn.v2ex.com/gravatar/avatar,之前我是使用这个显示头像的,但是现在不能用了,好奇怪
@jclser
能接受~
@Vv