实现typecho评论框输入QQ号码自动获取QQ头像和昵称
玩不溜,花了不少时间才实行了这个功能,网上找打的都是wordpress比较多,结构不是很熟悉,又用不了,看看评论效果把
输入QQ就自动获取昵称,邮箱和头像,可能还有不少错误或者不严谨的地方,不过,基本上也就大概了…… 留个记录方便有缘人折腾下饭
主要核心还是ajax去处理,获取到QQ身份的数据信息,比如……
<?php
// 通过QQ号即可获取用户信息
// 获取QQ头像接口
// http://q1.qlogo.cn/g?b=qq&nk=QQ号&s=100&t=1547904810
// 获取QQ昵称接口
// http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=QQ号
// BY TANKING
// LIKEYUNBA.COM
header('Content-Type: text/html;charset=utf-8');
$QQ=$_GET["qq"];
if($QQ!=''){
$urlPre='http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=';
$data=file_get_contents($urlPre.$QQ);
$data=iconv("GB2312","UTF-8",$data);
$pattern = '/portraitCallBack\((.*)\)/is';
preg_match($pattern,$data,$result);
$result=$result[1];
$nickname = json_decode($result, true)["$QQ"][6];
echo "QQ昵称:".$nickname;
echo "<br/><br/>";
$headimg = "http://q1.qlogo.cn/g?b=qq&nk=$QQ&s=100&t=1547904810";
echo "QQ头像:";
echo "<br/><br/>";
echo "<img src=\"$headimg\">";
echo "<br/><br/>";
$email = $QQ."@qq.com";
echo "QQ邮箱:".$email;
echo "<br/><br/>";
echo "JSON数据:";
echo "[{\"nickname\":\"$nickname\",\"touxiang\":\"$headimg\",\"email\":\"$email\"}]";
}else{
echo "请输入qq号!";
}
?>
上面就差不多已经很足够了吧……
那么建立php文件,新建……get_qq_info.php
代码如下
<?php
header('Content-Type: text/html;charset=utf-8');
$QQ=$_POST["qq"];
if($QQ!=''){
$urlPre='http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=';
$data=file_get_contents($urlPre.$QQ);
$data=iconv("GB2312","UTF-8",$data);
$pattern = '/portraitCallBack\((.*)\)/is';
preg_match($pattern,$data,$result);
$result=$result[1];
$nickname = json_decode($result, true)["$QQ"][6];
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$QQ;
$qqurl = file_get_contents($geturl);
$str1 = explode('sdk&k=', $qqurl);
$str2 = explode('&t=', $str1[1]);
$k = $str2[0];
if(empty($k)){
$url = '/usr/themes/spzac/img/wu-user.png';
}
else{ $url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';}
$aaa = array('name'=>$nickname,'qqtx'=>$url);
$bbb =json_encode($aaa);
echo $bbb;
}else{
echo "请输入qq号!";
}
?>
里面主要是通过qq获取了昵称和头像,头像的获取和前面不太一样,我这里设置的比较准确……把…,如果不准确,那也算了
参考这里
(新)typecho获取QQ头像,隐藏QQ号
最初想到获取QQ头像地址就是下面这样,当随之而来的问题就是暴露了别人的QQ号码,这点对于保护他人隐私上来说不太好。 国内使用Gravatar的用户很少,所以很多邮箱....
下一步
建立js文件,我这里是qqget.js,记得让页面调用
function fn_qqinfo() {
var qq_num = $('#qqinfo').val();
if (qq_num) {
if (!isNaN(qq_num)) {
$.ajax({
url: "/usr/themes/spzac/lib/get_qq_info.php",
type: "POST",
data: {
qq: qq_num,
},
async: true,
dataType: "json",
success: function(data) {
$("#mail").val(qq_num + '@qq.com');
$('#comment').focus();
if (data == null) {
$("#author").val('QQ游客');
} else {
$("#author").val(data.name == "" ? 'QQ游客' : data.name);
$('div.ajax-user-avatar img').attr('src',data.qqtx);
}
},
error: function(err) {
$("#author").val('QQ游客');
$("#mail").val(qq_num + '@qq.com');
$('#comment').focus();
}
});
} else {
$("#mail").val('你输入的好像不是QQ号码');
}
} else {
$("#qqinfo").val('请输入您的QQ号');
}
}
这里是通过截取到输入的QQ,然后通过ajax去处理得到相关昵称,邮箱和头像,返回调用,赋予指定的输入框的值
下面是前端的html代码,参考就行了,举一反三,自己配置到自己的页面代码就行了
<div class="input_body qqget_all">
<div class="qqget_hasLogin ajax-user-avatar"> <img src="<?php $this->options->themeUrl('img/wu-user.png'); ?>" width="35px" height="35px" class="avatar hasLogin-author " ></div>
<ul class="ident qqget_input">
<li><input type="text" class="form-control " name="qqinfo" id="qqinfo" placeholder="QQ号可获取头像和昵称" onblur="fn_qqinfo()" required="required"></li>
<li><input type="mail" class="form-control " name="mail" id="mail" placeholder="邮件*" readonly unselectable="on" value="<?php $this->remember('mail'); ?>"></li>
<li><input type="text" class="form-control " name="author" id="author" placeholder="昵称*" autocomplete="off" value="<?php $this->remember('author'); ?>" /></li>
</ul>
<input type="submit" value="提交评论" class="comment_submit_button c_button">
</div>
我这里目前是实现在评论框,还要继续弄到注册页面,但是思路还是一样的,有问题就留言把……
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/323
15 条评论
1.5w
发表评论
已有 15 条评论
热门文章
自媒体博客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 评论
不会自动获取qq昵称,获取的出来是qq游客
怎么我发表了评论,评论里的头像不显示?
@刚醒
主题也要包含有这个功能,实际上这里的作用就是为了引导评论的时候填入的是自己的qq信息,评论是否显示是主题是否包含了这个功能的关系
:汗:
我看看:酷:
评论列表里调用头像的代码是什么呀?
@Pène
https://www.dpaoz.com/316
@Vv
试了不好用 没有代码功底 可以直接贴出 评论列表里qq头像的代码吗 谢啦
@Designer Pène
贴出来,也会和其他的主题不搭,你可以下载免费主题,然后对应相关的代码比较好:问号:
老是点到你的QQ
@小号
如果是手机端的话,确实是:汗::汗:
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
测试一下下:喜欢:
:滑稽::滑稽::滑稽:
:真棒::真棒:这个厉害了