实现typecho评论框输入QQ号码自动获取QQ头像和昵称

玩不溜,花了不少时间才实行了这个功能,网上找打的都是wordpress比较多,结构不是很熟悉,又用不了,看看评论效果把

输入QQ就自动获取昵称,邮箱和头像,可能还有不少错误或者不严谨的地方,不过,基本上也就大概了…… 留个记录方便有缘人折腾下饭

主要核心还是ajax去处理,获取到QQ身份的数据信息,比如……

  1. <?php
  2. // 通过QQ号即可获取用户信息
  3. // 获取QQ头像接口
  4. // http://q1.qlogo.cn/g?b=qq&nk=QQ号&s=100&t=1547904810
  5. // 获取QQ昵称接口
  6. // http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=QQ号
  7. // BY TANKING
  8. // LIKEYUNBA.COM
  9. header('Content-Type: text/html;charset=utf-8');
  10. $QQ=$_GET["qq"];
  11. if($QQ!=''){
  12. $urlPre='http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=';
  13. $data=file_get_contents($urlPre.$QQ);
  14. $data=iconv("GB2312","UTF-8",$data);
  15. $pattern = '/portraitCallBack\((.*)\)/is';
  16. preg_match($pattern,$data,$result);
  17. $result=$result[1];
  18. $nickname = json_decode($result, true)["$QQ"][6];
  19. echo "QQ昵称:".$nickname;
  20. echo "<br/><br/>";
  21. $headimg = "http://q1.qlogo.cn/g?b=qq&nk=$QQ&s=100&t=1547904810";
  22. echo "QQ头像:";
  23. echo "<br/><br/>";
  24. echo "<img src=\"$headimg\">";
  25. echo "<br/><br/>";
  26. $email = $QQ."@qq.com";
  27. echo "QQ邮箱:".$email;
  28. echo "<br/><br/>";
  29. echo "JSON数据:";
  30. echo "[{\"nickname\":\"$nickname\",\"touxiang\":\"$headimg\",\"email\":\"$email\"}]";
  31. }else{
  32. echo "请输入qq号!";
  33. }
  34. ?>

上面就差不多已经很足够了吧……

那么建立php文件,新建……get_qq_info.php

代码如下

  1. <?php
  2. header('Content-Type: text/html;charset=utf-8');
  3. $QQ=$_POST["qq"];
  4. if($QQ!=''){
  5. $urlPre='http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=';
  6. $data=file_get_contents($urlPre.$QQ);
  7. $data=iconv("GB2312","UTF-8",$data);
  8. $pattern = '/portraitCallBack\((.*)\)/is';
  9. preg_match($pattern,$data,$result);
  10. $result=$result[1];
  11. $nickname = json_decode($result, true)["$QQ"][6];
  12. $geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$QQ;
  13. $qqurl = file_get_contents($geturl);
  14. $str1 = explode('sdk&k=', $qqurl);
  15. $str2 = explode('&t=', $str1[1]);
  16. $k = $str2[0];
  17. if(empty($k)){
  18. $url = '/usr/themes/spzac/img/wu-user.png';
  19. }
  20. else{ $url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';}
  21. $aaa = array('name'=>$nickname,'qqtx'=>$url);
  22. $bbb =json_encode($aaa);
  23. echo $bbb;
  24. }else{
  25. echo "请输入qq号!";
  26. }
  27. ?>

里面主要是通过qq获取了昵称和头像,头像的获取和前面不太一样,我这里设置的比较准确……把…,如果不准确,那也算了

参考这里

(新)typecho获取QQ头像,隐藏QQ号

最初想到获取QQ头像地址就是下面这样,当随之而来的问题就是暴露了别人的QQ号码,这点对于保护他人隐私上来说不太好。 国内使用Gravatar的用户很少,所以很多邮箱....

下一步

建立js文件,我这里是qqget.js,记得让页面调用

  1. function fn_qqinfo() {
  2. var qq_num = $('#qqinfo').val();
  3. if (qq_num) {
  4. if (!isNaN(qq_num)) {
  5. $.ajax({
  6. url: "/usr/themes/spzac/lib/get_qq_info.php",
  7. type: "POST",
  8. data: {
  9. qq: qq_num,
  10. },
  11. async: true,
  12. dataType: "json",
  13. success: function(data) {
  14. $("#mail").val(qq_num + '@qq.com');
  15. $('#comment').focus();
  16. if (data == null) {
  17. $("#author").val('QQ游客');
  18. } else {
  19. $("#author").val(data.name == "" ? 'QQ游客' : data.name);
  20. $('div.ajax-user-avatar img').attr('src',data.qqtx);
  21. }
  22. },
  23. error: function(err) {
  24. $("#author").val('QQ游客');
  25. $("#mail").val(qq_num + '@qq.com');
  26. $('#comment').focus();
  27. }
  28. });
  29. } else {
  30. $("#mail").val('你输入的好像不是QQ号码');
  31. }
  32. } else {
  33. $("#qqinfo").val('请输入您的QQ号');
  34. }
  35. }

这里是通过截取到输入的QQ,然后通过ajax去处理得到相关昵称,邮箱和头像,返回调用,赋予指定的输入框的值

下面是前端的html代码,参考就行了,举一反三,自己配置到自己的页面代码就行了

  1. <div class="input_body qqget_all">
  2. <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>
  3. <ul class="ident qqget_input">
  4. <li><input type="text" class="form-control " name="qqinfo" id="qqinfo" placeholder="QQ号可获取头像和昵称" onblur="fn_qqinfo()" required="required"></li>
  5. <li><input type="mail" class="form-control " name="mail" id="mail" placeholder="邮件*" readonly unselectable="on" value="<?php $this->remember('mail'); ?>"></li>
  6. <li><input type="text" class="form-control " name="author" id="author" placeholder="昵称*" autocomplete="off" value="<?php $this->remember('author'); ?>" /></li>
  7. </ul>
  8. <input type="submit" value="提交评论" class="comment_submit_button c_button">
  9. </div>

我这里目前是实现在评论框,还要继续弄到注册页面,但是思路还是一样的,有问题就留言把……

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/323
15 条评论
1.7w

发表评论

已有 15 条评论

  1. 2995723514@qq.com     Win 7 /    Chrome
    2022-08-02 10:21

    不会自动获取qq昵称,获取的出来是qq游客

  2. 刚醒     Win 10 /    Chrome
    2020-10-12 01:57

    怎么我发表了评论,评论里的头像不显示?

    1. 【管理员】Vv     Win 7 /    Chrome
      2020-10-12 10:16

      @刚醒

      主题也要包含有这个功能,实际上这里的作用就是为了引导评论的时候填入的是自己的qq信息,评论是否显示是主题是否包含了这个功能的关系

  3. Deli Wong     iPhone /    Safari
    2020-08-25 06:10

  4. Μ-爱奇艺8.5R     Win 10 /    QQ浏览器
    2020-08-01 12:27

    我看看

  5. Pène          MacOS /    Chrome
    2020-06-09 00:19

    评论列表里调用头像的代码是什么呀?

    1. 【管理员】Vv     Win 7 /    Chrome
      2020-06-09 07:38

      @Pène     

      https://www.dpaoz.com/316

      1. Designer Pène          MacOS /    Chrome
        2020-06-09 18:15

        @Vv

        试了不好用 没有代码功底 可以直接贴出 评论列表里qq头像的代码吗 谢啦

        1. 【管理员】Vv     Win 7 /    Chrome
          2020-06-09 18:35

          @Designer Pène     

          贴出来,也会和其他的主题不搭,你可以下载免费主题,然后对应相关的代码比较好

  6. 小号     Win 10 /    Chrome
    2020-05-23 19:02

    老是点到你的QQ

    1. -     iPhone /    Safari
      2020-05-23 20:25

      @小号

      如果是手机端的话,确实是

  7. 小号     Win 10 /    Chrome
    2020-05-23 18:59

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

  8. 九猫传媒     Win 7 /    Chrome
    2020-05-18 23:17

    测试一下下

  9. 非李莫属ˇ     Win 10 /    Chrome
    2020-05-18 09:09

  10. Lioti     iPhone /    Safari
    2020-05-15 21:29

    这个厉害了

!