是否有被Handsome的时光机功能惊艳到?
它的灵感就来源于微信更新状态至typecho时光机
今天要分享的是Typecho博客对接QQ机器人发表说说
预览地址:[[签到墙]][11]
食用方法
1.主题目录新建Ucpage.php文件,把下面代码复制进去
<?php
/**
* uc page
*
* @package custom
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
$this->need('header.php');
?>
<style>
.page-content table{
margin-bottom: 15px;
width: 100%;
min-width: 100%;
min-height: 110px;
}
.page-content table tr td{
position: relative;
}
.tra{
width: 76px;
max-width: 76px;
min-width: 76px;
}
.page-content table *{
border: none;
}
.tra .divimg{
display: block;
width: 50px;
height: 50px;
margin: 0;
position: absolute;
top: 5px;
bottom: 0;
left: 10px;
right: 0;
border: 0;
border-radius: inherit;
background-size: cover;
background-repeat: no-repeat;
background-position: 50% 50%;
border-radius: 50%;
}
.conn::after{
content: '';
display: block;
clear: both;
}
.conn img{
display: block;
}
.page-a:before{
font-family: none;
content: '';
}
.page-a{
padding: 3px 5px;
}
.page-content img{
max-height: 200px;
}
</style>
<div class="layout">
<div class="page">
<article class="page-body">
<div class="page-content">
<?php foreach (Sel($_GET["page"]) as $mdi): ?>
<table border="1">
<tr>
<td class="tra" rowspan="2"><div class="divimg" style="background-image:url(<?php echo qqimg($mdi['qq']); ?>)"></div></td>
<td><?php echo $mdi['name']; ?></td>
<td style="float:right;"><?php echo $mdi['time']; ?></td>
</tr>
<tr>
<td class="conn" colspan="2"><?php echo TiHuan($mdi['txt']); ?></td>
</tr>
</table>
<?php endforeach; ?>
<?php sspages(); ?>
</div>
</article>
</div>
</div>
<?php $this->need('footer.php'); ?>
2.主题目录新建Fun.php文件,把下面代码复制进去
<?php
/**
* INSERTJSON
*
* @package custom
*/
header("Content-Type:text/html;charset=UTF-8");
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
?>
<?php
if(isset($_GET["name"])&&isset($_GET["txt"])&&isset($_GET["qq"])) {
$r = AddT($_GET["name"],$_GET["txt"],$_GET["qq"]);
$te;
if($r==-1) {
$te = "I don't know that.~~~";
} else if($r==-2) {
$te = "It's too long~~~";
} else if($r==-3) {
$te = "QQ error";
} else if($r==-4) {
$te = "Key error";
} else {
$this->response->throwJson(array("ret" => $r , "msg" => $te ));
}
} else {
echo '如果你来到了这个页面,那说明我们很有缘,既然这么有缘,那么我就坦白告诉你,这里除了这段话什么都没有';
}
?>
3.在数据库执行下面SQL代码
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
CREATE TABLE `typecho_t` (
`id` int(11) UNSIGNED NOT NULL,
`name` char(20) NOT NULL,
`txt` varchar(255) NOT NULL,
`qq` char(10) NOT NULL,
`time` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `typecho_t`
ADD PRIMARY KEY (`id`);
ALTER TABLE `typecho_t`
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=171;
COMMIT;
4.把下面代码复制到function.php文件中
/**************************************************************说说*************************************************************************************************/
//机器人插入说说数据处理
function AddT($name1,$txt1,$qq1) {
$key = "random";
//这里是秘钥,对应机器人秘钥
$txt = trim($txt1);
//清理空格
$txt = strip_tags($txt);
//过滤html标签
$txt = htmlspecialchars($txt);
//将字符内容转化为html实体
$txt = addslashes($txt);
$txt = urldecode($txt);
$name = trim($name1);
//清理空格
$name = strip_tags($name);
//过滤html标签
$name = htmlspecialchars($name);
//将字符内容转化为html实体
$name = addslashes($name);
$name = urldecode($name);
$qq = trim($qq1);
//清理空格
$qq = strip_tags($qq);
//过滤html标签
$qq = htmlspecialchars($qq);
//将字符内容转化为html实体
$qq = addslashes($qq);
$qq = urldecode($qq);
if($key==$_GET["key"]) {
//判断key是否存在或正确
if(preg_match('/[1-9]([0-9]{5,11})/', $qq, $matches)) {
//判断qq号是否规范
if(mb_strlen($txt,'UTF8')<255) {
//字符串必须小于255位
if(strstr($txt, '$')||strstr($txt, '<')||strstr($txt, '>')||strstr($txt, '\"')||strstr($txt, '\'')||strstr($txt, '#')) {
return -1;
//存在特殊字符
} else {
$db = Typecho_Db::get();
$rs = $db->insert('table.t')->rows(array('id' => null, 'name' => $name , 'txt' => $txt , 'qq' => $qq , 'time' => date("Y/m/d") ));
return $db->query($rs);
//成功
}
} else {
return -2;
//长度值大于255
}
} else {
return -3;
//qq错误
}
} else {
return -4;
//key不正确
}
}
//获取qq头像并加密qq号
function qqimg($qq) {
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
$qquser = file_get_contents($geturl);
$str1 = explode('sdk&k=', $qquser);
$str2 = explode('&s=', $str1[1]);
$k = $str2[0];
$url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
return $url;
}
//字符替换把*img和img*替换成<img src=''>
function TiHuan($img) {
if(strstr($img,"img")) {
$pagelink=str_ireplace('*img' , "<img src='" , $img);
$pagelink=str_ireplace('img*' , "'>",$pagelink);
return $pagelink;
} else {
return $img;
}
}
//查询说说数量-->分页用
function coun() {
$db = Typecho_Db::get();
$po=$db->select('table.t.qq')->from ('table.t');
$pom = $db->fetchAll($po);
$num = count($pom);
$shu = 0;
for ($x=0; $x<$num; $x++) {
$shu+=1;
}
if($shu%10==0) {
return $shu/10;
} else {
return floor($shu/10+1);
}
}
//说说分页
function sspages() {
for ($i=0;$i<coun();$i++) {
echo '<a class="page-a" href="https://1.342600.xyz/uc?page='.($i+1).'">'.($i+1).'</a>';
}
}
//说说展示
function Sel($pagess) {
$pa = trim($pagess);
//清理空格
$pa = strip_tags($pa);
//过滤html标签
$pa = htmlspecialchars($pa);
//将字符内容转化为html实体
$pa = addslashes($pa);
//给每个双引号转义
$db = Typecho_Db::get();
$query= $db->select()->from('table.t')->page($pa,10)->order('id',Typecho_Db::SORT_DESC);
return $db->fetchAll($query);
}
/*************************************************************说说结束*********************************************************************************************/
上面涉及的域名自己替换,秘钥自己随意设置,跟机器人端匹配即可。
代码部分告一段落/ 机器人设置部分如下图:
感谢浩瀚大佬技术支持!
666666666
顶
路过,我的酱油还没有打满
完全需要重新排版才行。
那个机器人源码呢?
群文件有。这个主题排版太难了