(新)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 条评论
6.8k
发表评论
已有 4 条评论
热门文章
自媒体博客Spimes主题34w 阅读
Spimes主题专为博客、自媒体、资讯类的网站设计....
vCard主题个人简历主题13w 阅读
一款个人简历主题,可以简单搭建一下,具体也比较简单....
Splity博客双栏主题11w 阅读
仿制主题,Typecho博客主题,昼夜双版设计,可....
Spzac个人资讯下载类主题11w 阅读
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
自媒体博客Spimes主题418 评论
Splity博客双栏主题187 评论
Spzac个人资讯下载类主题89 评论
Splinx博客图片主题35 评论
Spzhi知识付费社区主题34 评论
三栏清新博客S_blog主题30 评论
vCard主题个人简历主题29 评论
Pure轻简主题28 评论
:黑线: 这个会拖慢页面1秒左右的。
@jclser
https://cdn.v2ex.com/gravatar/avatar,之前我是使用这个显示头像的,但是现在不能用了,好奇怪
@jclser
能接受~:笑眼:
@Vv
:滑稽: 是一个Q慢一秒。