修复知更鸟Begin主题的QQ获取信息填充功能

书蓝画青 165 阅读 1 讨论

由于知更鸟采用的是朋友网获取网名的方式,之前朋友网倒闭关停了,所以很多站长也陆续发现自己使用知更鸟的自动获取QQ信息功能失效了。

今天准备把自己的小网站一部分失效的功能补好,找到了这个小缺陷,所以就修复一下喽~

修复知更鸟Begin主题的QQ获取信息填充功能

知更鸟主题的获取QQ信息方式是通过js配合php文件来实行的,我的第一步就是打开浏览器的F12->NetWork功能来观察调用的文件,发现调用了两个文件,一个是getqqinfo.js,另一个是qq-info.php文件,简单的判断一下,了解到js文件不管事儿,直接找qq-info.php去,下载到本地后,打开文件,找到请求的url,发现是之前的朋友网,确定无法打开网页。

之后直接上百度搜可用的接口,找来找去发现为了安心还是使用官方的接口吧,最后使用的是QQ空间的接口,http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=QQ号,再然后,为了这个我自己写了一个接口,使用的是get接收传过来的参数,然后我本地使用post像QQ空间的接口去请求数据,得到数据后解析切割,只剩下qqname返回给请求者。

写好之后直接修改qq-ingo.php,然后我就发现了,最好是不要动作者的代码。想了想,还是直接用作者的代码请求官方接口吧,最后我修改的内容就出炉了。试了下,功能全部可用,输入QQ能自动填充name,avatar,url,email,所以到这里我们的知更鸟的QQ自动填充内容就修复完成了。

下面是代码:使用方式,找到你的wp-content/themes/begin/js/qq-info.php文件,先备份,之后直接复制下面的代码进去覆盖就行。我使用的版本是5.2,鉴于之后的版本作者自己应该已经修复了,所以没有修复的赶紧试试吧。

注意:我用的这个接口是QQ空间官网的一个,网上一查就能查到了。由于之前还采用了一个q.logo的网站获取实时QQ头像,在这里我是直接去掉了,改成了只获取一次,QQ头像就直接在返回的数据中切割提取出来。

修复知更鸟Begin主题的QQ获取信息填充功能

返回的内容:portraitCallBack({"643965790":["http://qlogo3.store.qq.com/qzone/643965790/643965790/100",33693,-1,0,0,0,"水阔鱼沉",0]}),这里返回的数据实际上包含了两个有用的内容,一个就是QQ头像(此头像是QQ空间的头像,和QQ头像不是同步的,如果空间没有设置头像会显示一个灰色的Qzone标志);另一个就就是我们的网名了,这个网名是和我们的QQ网名同步的。

<?php
header("Content-Type:text/html; charset=UTF-8");
error_reporting(0);
include "../../../../wp-load.php";
$table_name = $wpdb->prefix . "qq_usermeta";
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['type'])) {
    if ($_POST['type'] == "qq") {
        if (isset($_POST['qq']) && $_POST['qq'] == "") {
            $message = "请输入QQ";
            $status = "1";
        } else {
            $qq = $_POST['qq'];
            $status = "0";
        }
    } elseif ($_POST['type'] == "checkemail") {
        $qq = $_POST['qq'];
        $email = $_POST['email'];
        $status = "0";
    } else {
    }
} else {
    $message = "请求方式错误";
    $status = "1";
}
//echo $qq;
//这里就是我修改过的,主要是切割取参
$nameurl = "http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=" . $qq;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $nameurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
curl_close($ch);
$info = iconv('GBK', 'UTF-8', $contents);
$strarr = explode(',', $info);
$req = explode('"', $strarr[6]);
$touxiang1 = explode('[', $strarr[0]);
$touxiang2 = explode('"', $touxiang1[1]);
if ($_POST['type'] == "qq") {
    if (count($results) == "0") {
        $email = $qq . "@qq.com";
        $url = "https://user.qzone.qq.com/" . $qq;
    } else {
        $email = $results[0][email];
        $url = ',"url":"' . $results[0] . '"';
    }
}
$logourl = $touxiang2[1];
if ($_POST['type'] == "qq") {
    if ($status == "0") {
        $cookiehash = '' . COOKIEHASH;
        print <<<END
{"name":"{$req[1]}","avatar":"{$logourl}","email":"{$email}","url":"{$url}","status":"{$status}","cookiehash":"{$cookiehash}"}
END;
    } else {
        print <<<END
{"message":"{$message}","status":"{$status}"}
END;
    }
} elseif ($_POST['type'] == "checkemail") {
    if ($status == "0") {
        print <<<END
{"status":"{$status}"}
END;
    } else {
        print <<<END
{"message":"{$message}","status":"{$status}"}
END;
    }
}

切记,转载请保留本站链接!欢迎大家网站友联合作!

标签:

打赏
发表评论 取消回复
表情 图片 链接 代码

  1. 心有君兮

    谢谢,我试试

分享
微信
微博
QQ