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

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

使用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. 头像
      可爱的叮当猫
      第27楼
      试试
      回复
    1. 头像
      第26楼
      想学习一下
      回复
    1. 头像
      北柠
      第25楼
      谢谢
      回复
    1. 头像
      文天
      第24楼
      我的搞好了 就是qq头像无法显示 怎么办
      回复
      1. 头像
        舍力
        @文天:此教程获取不到QQ头像的。
        回复
    1. 头像
      大表哥博客
      第23楼
      input加上id信息,这里是在哪里加上信息?怎么加上信息?
      回复
      1. 头像
        舍力
        @大表哥博客:评论框
        回复
    1. 头像
      後╮默落
      第22楼
      请问一直在获取那里不动了,怎么解决呢?
      回复
      1. 头像
        舍力
        @後╮默落:这个是路径出错了,检查一下路径是不是正确
        回复
      1. 头像
        转身後╮默落
        @舍力:请问哪个路径放错了?加入js的那个么?还是新建那个php?
        回复
      1. 头像
        舍力
        @转身後╮默落:按教程做,如果还是不会就找人弄吧。
        回复
    1. 头像
      第21楼
      js应该添加到什么位置?
      回复
      1. 头像
        舍力
        @康:<head></head>之间
        回复
    1. 头像
      a&#39;ゞ a
      第20楼
      为什么js放了没有反应?
      回复
    1. 头像
      a&#39;ゞ a
      第19楼
      希望再详细一点,添加了没反应
      回复
      1. 头像
        舍力
        @a&amp;#39;ゞ a:这个还不详细我是无能为力了。。。
        回复
    1. 头像
      顺心意
      第18楼
      DVDvsdvaaa对对对
      回复
    1. 头像
      贵族社区
      第17楼
      js加在哪里?
      回复
    1. 头像
      余生还长
      第16楼
      可以了
      回复
      1. 头像
        a&#39;ゞ a
        @余生还长:我的怎么不行
        回复
    1. 头像
      余生还长
      第15楼
      不知道怎么加入js,老是报错
      回复
    1. 头像
      Legend
      第14楼
      6666厉害了
      回复
    1. 头像
      出售冷弯弹弓
      第13楼
      厉害了,老铁
      回复
    1 2