实现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>
我这里目前是实现在评论框,还要继续弄到注册页面,但是思路还是一样的,有问题就留言把……
发表评论
已有 15 条评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
最新评论
Z.
11月29日
博主你好,Deng插件,这个点击不进去,提示这个(Warning: require_once(/www/wwwroot/w.zzy2020.com/usr/plugins/Deng/Deng/html/profile.php): failed to open stream: No such file or directory in /www/wwwroot/w.zzy2020.com/Fresh/extending.php on line 26
Fatal error: require_once(): Failed opening required '/www/wwwroot/w.zzy2020.com/usr/plugins/Deng/Deng/html/profile.php' (include_path='.:/www/server/php/72/lib/php') in /www/wwwroot/w.zzy2020.com/Fresh/extending.php on line 26)
不会自动获取qq昵称,获取的出来是qq游客
怎么我发表了评论,评论里的头像不显示?
@刚醒
主题也要包含有这个功能,实际上这里的作用就是为了引导评论的时候填入的是自己的qq信息,评论是否显示是主题是否包含了这个功能的关系
:汗:
我看看:酷:
评论列表里调用头像的代码是什么呀?
@Pène
https://www.dpaoz.com/316
@Vv
试了不好用 没有代码功底 可以直接贴出 评论列表里qq头像的代码吗 谢啦
@Designer Pène
贴出来,也会和其他的主题不搭,你可以下载免费主题,然后对应相关的代码比较好:问号:
老是点到你的QQ
@小号
如果是手机端的话,确实是:汗::汗:
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
测试一下下:喜欢:
:滑稽::滑稽::滑稽:
:真棒::真棒:这个厉害了