Emlog评论通过QQ获取昵称资料

2017-5-9 / 40 评论 / 18328 阅读

使用emlog博客程序朋友有采用第三方评论,也有采用内置评论的,使用第三方评论的还好,可以直接QQ登陆,但是如果是采用内置评论的很多访客都不愿意填写信息,因此可能会丢失很多评论。今天舍力分享一篇采用js根据用户填写的QQ号码拉取用户的昵称信息,然后自动填写表单,这样用户只需要输入QQ就能实现自动填写了。代码以默认模板为例。



第一步、我们要确认模板是否有加载jquery,emlog默认jquery代码如下(放入<head></head>之间),如果有加载的请自动忽略此步。

<script src="<?php echo BLOG_URL;?>include/lib/js/jquery/jquery-1.7.1.js" type="text/javascript"></script>

第二步、找到模板文件module.php中的

<input type="hidden" name="gid" value="<?php echo $logid; ?>" />

在上面代码的后面加入代码

<input id="qq" type="text" name="qq" maxlength="49" placeholder="填入qq自动获取信息" value="" size="22" tabindex="0"><div id="error"></div><div id="ajaxloading"></div>

然后在每一个input加上id信息,例如: name="commail" 后面添加 id="commail"



第三步、建立一个文件夹,如qq放入根目录中,在里面建一个文件index.php,代码如下

<?php
header("Content-type: application/json; charset=utf-8"); 
$qq = $_GET['qq'];
$html = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins='.$qq);
$nic = explode(',',$html);
$name = trim(mb_convert_encoding($nic[6], "UTF-8", "GBK"),'"');
$img = file_get_contents('http://ptlogin2.qq.com/getface?appid=1006102&uin='.$qq.'&imgtype=3');
preg_match('/pt.setHeader\((.*?)\);/',$img,$picc);
$pic = json_decode($picc[1]);
$json['name'] = $name;
$json['pic'] = $pic->$qq;
echo $_GET['callback'].'('.json_encode($json).')';
?>

第四步、加入js代码,代码如下(放在<head></head>之间,代码中的网址路径../go/qq/需要改成你自己创建的,即第三步中创建的路径):

<script>
$(function () {
Lotto = {};
Lotto.comment = function(){
$("#qq").blur(function(){
            $('#qq').attr("sl",true);
            $("#ajaxloading").html('<img src="[你的网站,必须加http://]/go/qq/loading.gif"><a style="font-size:12px;margin-left:5px;">正在获取QQ信息..</a>');
            $.getJSON('[你的网站,必须加http://]/go/qq/?qq='+$('#qq').val()+'&callback=?', function(q){
                if(q.name){
                    $('#comname').val(q.name);
                    $('#commail').val($('#qq').val()+'@qq.com');
                    $('#comurl').val('http://user.qzone.qq.com/'+$('#qq').val());
                    $('#qq').attr("disabled",false);
                    $("#ajaxloading").hide();
                }else{
                    $("#ajaxloading").hide();
                    $("#error").html('qq账号错误').show().fadeOut(4000);
                    $('#qq').attr("sl",false);
                }
            });
        });

}
Lotto.run = function(){this.comment();};
Lotto.run();
});
</script>

友情提示:朋友网接口失效,已经更改为QQ空间接口,请无法获取资料的朋友请更改第四步的代码。2018-07-04



统一回复评论中提到的几个问题:

1、js你想放在哪里都可以,只要调用出来即可,正常都是放入<head></head>之间

评论一下?

OωO
取消
    1. 头像
      隐身守候
      第12楼
      纠结,有些地方没看懂
      回复
      1. 头像
        舍力
        @隐身守候:按教程一步一步来就可以了。
        回复
    1. 头像
      a&#39;ゞSurplus
      第11楼
      看看
      回复
    1. 头像
      CH时光、
      第10楼
      谢谢,已经照着教程弄好了,如果可以获取到头像就好了!现在用的模板头像不显示……
      回复
    1. 头像
      CH时光、
      第9楼
      卡在 正在获取QQ信息那,无法正确获取昵称等信息
      回复
    1. 头像
      艾小七
      第8楼
      艾小七路过
      回复
    1. 头像
      U·me
      第7楼
      厉害了,老铁
      回复
    1. 头像
      欣欣
      第6楼
      先码一个。请问如果浏览器禁用js怎么办?
      回复
      1. 头像
        舍力
        @欣欣:凉拌。。。
        回复
    1. 头像
      久伴
      第5楼
      来看看
      回复
    1. 头像
      心已成佛
      第4楼
      可是手机端无法使用?这个能让手机端也可以正常使用么?
      回复
      1. 头像
        舍力
        @心已成佛:一切正常呢,可以用手机访问我的博客看看
        回复
    1. 头像
      心已成佛
      地板
      哈哈,终于搞定,谢谢了。
      回复
      1. 头像
        转身後
        @心已成佛:请问你怎么搞定的?我也是一直在获取!
        回复
    1. 头像
      心已成佛
      板凳
      会一直卡在正在获取QQ信息那,无法正确获取昵称等信息。
      回复
    1. 头像
      zhang
      沙发
      类似你这种留言的QQ?
      回复
      1. 头像
        舍力
        @zhang:没错的,我就是用的这个。。
        回复
    1 2