├── .idea
├── Tieba-Cloud-Sign-Plugins.iml
├── modules.xml
└── vcs.xml
├── README.md
├── ver4_ban
├── cron
│ └── dopost.php
├── ver4_ban.php
├── ver4_ban_callback.php
├── ver4_ban_desc.php
├── ver4_ban_setting.php
└── ver4_ban_show.php
├── ver4_lottery
├── cron
│ └── dopost.php
├── ver4_lottery.php
├── ver4_lottery_callback.php
├── ver4_lottery_desc.php
└── ver4_lottery_show.php
├── ver4_post
├── cron
│ ├── daily.php
│ └── dopost.php
├── ver4_post.php
├── ver4_post_callback.php
├── ver4_post_desc.php
├── ver4_post_setting.php
└── ver4_post_show.php
├── ver4_rank
├── cron
│ └── dopost.php
├── ver4_rank.php
├── ver4_rank_callback.php
├── ver4_rank_desc.php
├── ver4_rank_list.json
└── ver4_rank_show.php
├── ver4_ref
├── cron
│ └── ref.php
├── ver4_ref.php
├── ver4_ref_callback.php
├── ver4_ref_desc.php
└── ver4_ref_setting.php
├── ver4_review
├── cron
│ └── dopost.php
├── ver4_review.php
├── ver4_review_callback.php
├── ver4_review_desc.php
├── ver4_review_setting.php
└── ver4_review_show.php
├── ver4_style
├── css
│ ├── boot.css
│ ├── test.css
│ └── ui.css
└── ver4_style.php
└── ver4_zdwk
├── cron
└── dopost.php
├── ver4_zdwk.php
├── ver4_zdwk_callback.php
├── ver4_zdwk_desc.php
└── ver4_zdwk_show.php
/.idea/Tieba-Cloud-Sign-Plugins.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tieba-Cloud-Sign-Plugins
2 |
3 | ## 插件列表
4 | ### 云封禁
5 | 吧务专用,可循环封禁指定账号
6 |
7 | **更新1.3版相关**
8 |
9 | 此版本需要用到 `STOKEN`,由于云签本体 `v4.98` 并不强制要求 `STOKEN`,请注意及时更新自己绑定的百度帐号的 `BDUSS` 以及 `STOKEN`
10 |
11 | **更新到1.1版或更高版本请执行**
12 | ```sql
13 | ALTER TABLE `tc_ver4_ban_list` CONVERT TO CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`;
14 | ALTER TABLE `tc_ver4_ban_userset` CONVERT TO CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`;
15 | ALTER TABLE `tc_ver4_ban_userset` CHANGE `c` `c` TEXT CHARACTER SET `utf8mb4` COLLATE `utf8mb4_general_ci`;
16 | ALTER TABLE `tc_ver4_ban_list`
17 | CHANGE `name` `name` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
18 | CHANGE `tieba` `tieba` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
19 | CHANGE `log` `log` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
20 | ADD `name_show` TEXT NULL AFTER `name`,
21 | ADD `portrait` TEXT NULL AFTER `name_show`;
22 | UPDATE `tc_ver4_ban_list` SET `log` = REPLACE(`log`, "
", "
\n");
23 | ```
24 | 其中 `tc_` 是默认表名前缀,如有过修改请自行修改表名前缀
25 |
26 | ### 云知道抽奖
27 | 自动完成知道抽奖,每日
28 |
29 | ### 云回贴
30 | 强大的自定义回帖功能(半失效)
31 |
32 | ### 名人堂
33 | 每日自动助攻贴吧名人堂
34 |
35 | **更新1.2版本相关**
36 |
37 | 已不再使用 `tc_ver4_rank_list` 这个表,故不需要执行1.1部分(下面几行)的内容;(对网站管理者)基于同样的理由请务必前往主程序的**计划任务**面板删除掉名为 `ver4_rank_daily` 的任务,否则计划任务会因需要的文件不存在而执行出错
38 |
39 | **更新1.1版后请执行**
40 | ```sql
41 | ALTER TABLE `tc_ver4_rank_list`
42 | CHANGE `nid` `nid` varchar(15) COLLATE 'utf8mb4_general_ci' NOT NULL AFTER `fid`,
43 | CHANGE `name` `name` varchar(255) COLLATE 'utf8mb4_general_ci' NOT NULL AFTER `nid`,
44 | CHANGE `tieba` `tieba` varchar(255) COLLATE 'utf8mb4_general_ci' NOT NULL AFTER `name`;
45 | ```
46 | 其中 `tc_` 是默认表名前缀,如有过修改请自行修改表名前缀
47 |
48 | ### 自动刷新贴吧列表
49 | 完全自动每日刷新贴吧列表
50 |
51 | ### 贴吧云审查
52 | 吧务专用,审查贴吧内不符合规范的帖子
53 |
54 | ### 云签AmazeUI
55 | 云签的一款UI产品
56 |
57 | ### 知道文库签到
58 | 自动签到百度知道,文库已废
59 |
--------------------------------------------------------------------------------
/ver4_ban/cron/dopost.php:
--------------------------------------------------------------------------------
1 | {$time} AND `uid` IN (SELECT `uid` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "users_options` WHERE `name` = 'ver4_ban_open' AND `value` = '1')";
10 | $max = $m->fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE {$sql}")); //获取ID最大值
11 | if ($id < $max['c']) {
12 | $ls = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `id` > {$id} AND {$sql} ORDER BY `id` ASC"));
13 | $us = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` WHERE `uid` = {$ls['uid']}"));
14 | $re = ver4_ban_client($ls['pid'], $ls['portrait'], $ls['name'], $ls['tieba'], $us['c']);
15 | $re = json_decode($re, true);
16 | if (!$re['error_code']) {
17 | $con = $ls['log'] . date('Y-m-d H:i:s') . ' 执行结果:操作成功
';
18 | } else {
19 | $con = $ls['log'] . date('Y-m-d H:i:s') . " 执行结果:操作失败#{$re["error_code"]} {$re["error_msg"]}
";
20 | }
21 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` SET `date` = {$time},`log` = '{$con}' WHERE `id` = {$ls['id']}");
22 | option::set('ver4_ban_id', $ls['id']);
23 | } else {
24 | option::set('ver4_ban_id', 0);
25 | }
26 |
27 |
28 | //清理所有已经解除绑定用户设置的信息
29 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list`");
30 | while ($x = $m->fetch_array($q)) {
31 | if ($x['etime'] - time() < -86400) {
32 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `id` = {$x['id']}");
33 | }
34 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
35 | if (empty($b['id'])) {
36 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `id` = {$x['id']}");
37 | $nu = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "users` WHERE `id` = {$x['uid']}"));
38 | if (empty($nu['id'])) {
39 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` WHERE `uid` = {$x['uid']}");
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/ver4_ban/ver4_ban.php:
--------------------------------------------------------------------------------
1 | 贴吧云封禁[吧务]';
12 | }
13 |
14 | addAction('navi_1', 'ver4_ban_nav');
15 | addAction('navi_7', 'ver4_ban_nav');
16 |
17 |
18 | /*
19 | * 执行封禁操作 网页
20 | * */
21 | function ver4_ban($pid, $portrait, $name, $name_show, $tieba, $reason, int $day = 1)
22 | {
23 | $bduss = misc::getCookie($pid);
24 | $r = empty($reason) ? '您因为违反吧规,已被吧务封禁,如有疑问请联系吧务' : $reason;
25 | $tl = new wcurl('https://tieba.baidu.com/pmc/blockid', [
26 | 'Connection: keep-alive',
27 | 'Accept: application/json, text/javascript, */*; q=0.01',
28 | 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',
29 | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
30 | 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
31 | 'Origin: https://tieba.baidu.com',
32 | 'Referer: https://tieba.baidu.com/',
33 | 'X-Requested-With: XMLHttpRequest',
34 | ]);
35 | $data = array(
36 | 'day' => $day, // 1 3 10 封禁时长
37 | 'fid' => misc::getFid($tieba),
38 | 'tbs' => misc::getTbs(0, $bduss),
39 | 'ie' => 'utf8',
40 | 'nick_name[]' => $name_show ?: '',
41 | 'pid' => mt_rand(100000000000, 150000000000),
42 | 'reason' => $r
43 | );
44 | $tl->addCookie('BDUSS=' . $bduss);
45 | $portrait !== null ? $data['portrait[]'] = $portrait : $data['user_name[]'] = $name;
46 | $tl->set(CURLOPT_RETURNTRANSFER, true);
47 | $rt = $tl->post($data);
48 | return $rt;
49 | }
50 |
51 | /*
52 | * 执行封禁操作 客户端
53 | * */
54 | function ver4_ban_client ($pid, $portrait, $name, $tieba, $reason, int $day = 1)
55 | {
56 | $bduss = misc::getCookie($pid);
57 | $r = empty($reason) ? '您因为违反吧规,已被吧务封禁,如有疑问请联系吧务!' : $reason;
58 | $tl = new wcurl('http://c.tieba.baidu.com/c/c/bawu/commitprison');
59 | $data = array(
60 | 'BDUSS' => $bduss,
61 | 'day' => $day,//1 7 10//封禁时长
62 | 'fid' => misc::getFid($tieba),
63 | 'ntn' => 'banid',
64 | 'portrait' => $portrait,
65 | 'reason' => $r,
66 | 'tbs' => misc::getTbs(0, $bduss),
67 | 'un' => $name,
68 | 'word' => $tieba,
69 | 'z' => rand(1000000000, 9999999999)//随便打的, 不要应该也行
70 | );
71 | $sign_str = '';
72 | foreach ($data as $k => $v) {
73 | $sign_str .= $k . '=' . $v;
74 | }
75 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
76 | $data['sign'] = $sign;
77 | $tl->set(CURLOPT_RETURNTRANSFER, true);
78 | $rt = $tl->post($data);
79 | return $rt;
80 | }
81 | /**
82 | * 获取任职信息
83 | *
84 | * @param $pid
85 | * @param $tieba_name
86 | * @return bool|string
87 | */
88 | function ver4_get_manager_web_backstage($pid, string $tieba_name)
89 | {
90 | $cookies = misc::getCookie($pid, true);
91 | try {
92 | $tl = new Wcurl('http://tieba.baidu.com/bawu2/platform/index?ie=utf-8&word=' . $tieba_name);
93 | $tl->addCookie('BDUSS=' . $cookies["bduss"] . ";STOKEN=" . $cookies["stoken"]);
94 | $tl->set(CURLOPT_RETURNTRANSFER, true);
95 | $tl->set(CURLOPT_CONNECTTIMEOUT, 3);
96 | $rt = $tl->get();
97 | $tl->close();
98 |
99 | //遍码转换
100 | $rt = mb_convert_encoding($rt, "utf-8", "gbk");
101 |
102 | return $rt;
103 | } catch (Exception $exception) {
104 | return '';
105 | }
106 | }
107 |
108 | //某个pid下帐号是否为吧务
109 | function ver4_is_manager($pid, string $tieba_name): array {
110 | return [
111 | "isManager" => (bool)preg_match('/
([^<]+)<\/p>/', ver4_get_manager_web_backstage($pid, $tieba_name), $managerType),
112 | "managerType" => empty($managerType[1]) ? "" : $managerType[1],
113 | ];
114 | }
115 | function ver4_ban_get_userinfo_by_words ($word) :array {
116 | $getInfo = json_decode((new wcurl("https://tieba.baidu.com/mo/q/search/user?word={$word}", ['User-Agent: tieba/12.5.1']))->get(), true);
117 | $userInfo = [];
118 | if (isset($getInfo["data"]["exactMatch"]["id"])) {
119 | $userInfo[] = [
120 | "name" => $getInfo["data"]["exactMatch"]["name"],
121 | "show_name" => $getInfo["data"]["exactMatch"]["user_nickname"],
122 | "portrait" => $getInfo["data"]["exactMatch"]["encry_uid"],
123 | "tieba_uid" => $getInfo["data"]["exactMatch"]["tieba_uid"],
124 | "baidu_uid" => (string)$getInfo["data"]["exactMatch"]["id"],
125 | "exact_match" => true,
126 | ];
127 | }
128 | foreach ($getInfo["data"]["fuzzyMatch"] as $fuzzyMatchItem) {
129 | $userInfo[] = [
130 | "name" => $fuzzyMatchItem["name"],
131 | "show_name" => $fuzzyMatchItem["user_nickname"],
132 | "portrait" => $fuzzyMatchItem["encry_uid"],
133 | "tieba_uid" => $fuzzyMatchItem["tieba_uid"],
134 | "baidu_uid" => (string)$fuzzyMatchItem["id"],
135 | "exact_match" => false,
136 | ];
137 | }
138 | return $userInfo;
139 | }
140 |
141 | //生成封禁列表
142 | function ver4_ban_global_ban_list_generate (array $i, $m):array {
143 | $globalBanList = [];
144 | foreach ($i["user"]["baidu"] as $userId => $userBaiduName) {
145 | $globalBanList[$userId] = [
146 | "name" => $userBaiduName,//$i["user"]["baidu_name_show"][$userId]??$i["user"]["baidu_portrait"][$userId],//注释部分用于banka版, 原版使用此插件请不要取消注释
147 | "list" => [],
148 | ];
149 | $api_ban_list = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `pid` = {$userId}");
150 | while ($api_ban_user_info = $m->fetch_array($api_ban_list)) {
151 | $globalBanList[$userId]["list"][] = [
152 | "id" => $api_ban_user_info['id'],
153 | "name" => $api_ban_user_info['name'],
154 | "name_show" => $api_ban_user_info['name_show'],//TODO 修改为贴吧uid
155 | "tieba_uid" => "0",
156 | "portrait" => $api_ban_user_info['portrait'],
157 | "tieba" => $api_ban_user_info["tieba"],
158 | "stime" => $api_ban_user_info["stime"],
159 | "etime" => $api_ban_user_info["etime"],
160 | "date" => $api_ban_user_info["date"],
161 | "log" => $api_ban_user_info["log"],
162 | ];
163 | }
164 | }
165 | return $globalBanList;
166 | }
167 |
--------------------------------------------------------------------------------
/ver4_ban/ver4_ban_callback.php:
--------------------------------------------------------------------------------
1 | query('
11 | CREATE TABLE IF NOT EXISTS `' . DB_PREFIX . 'ver4_ban_list` (
12 | `id` int NOT NULL AUTO_INCREMENT,
13 | `uid` int NOT NULL,
14 | `pid` int NOT NULL,
15 | `name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
16 | `name_show` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
17 | `portrait` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
18 | `tieba` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
19 | `stime` int NOT NULL,
20 | `etime` int NOT NULL,
21 | `log` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
22 | `date` int NOT NULL DEFAULT \'0\',
23 | PRIMARY KEY (`id`)
24 | ) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
25 | ');
26 | $m->query('
27 | CREATE TABLE IF NOT EXISTS `' . DB_PREFIX . 'ver4_ban_userset` (
28 | `id` int NOT NULL AUTO_INCREMENT,
29 | `uid` int NOT NULL,
30 | `c` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
31 | PRIMARY KEY (`id`)
32 | ) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
33 | ');
34 | }
35 |
36 | /**
37 | * 激活插件时会被调用
38 | */
39 | function callback_init()
40 | {
41 | option::set('ver4_ban_id', 0);
42 | option::set('ver4_ban_limit', 20);
43 | option::set('ver4_ban_break_check', '0');
44 | cron::set('ver4_ban_dopost', 'plugins/ver4_ban/cron/dopost.php', 0, 0, 0);
45 | }
46 |
47 | /**
48 | * 禁用插件时会被调用
49 | */
50 | function callback_inactive()
51 | {
52 | option::del('ver4_ban_id');
53 | option::del('ver4_ban_limit');
54 | option::del('ver4_ban_break_check');
55 | cron::del('ver4_ban_dopost');
56 | }
57 |
58 | /**
59 | * 卸载插件时会被调用
60 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
61 | */
62 | function callback_remove()
63 | {
64 | //在这里做点事
65 | global $m;
66 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_ban_userset`");
67 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_ban_list`");
68 | }
69 |
70 | /**
71 | * 升级插件时会被调用
72 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
73 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
74 | */
75 | function callback_update($ver1, $ver2)
76 | {
77 | //ver1 是当前数据库的版本号
78 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
79 | //在这里做点事
80 | return false; //我不干了!
81 | }
82 |
83 | /**
84 | * 插件自定义保存设置函数
85 | * 插件调用方法:setting.php?mod=setplugin:插件名称
86 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
87 | */
88 | function callback_setting()
89 | {
90 | //在这里做点事
91 | //dump($_POST); //看看前端给我POST了什么东西
92 | }
93 |
--------------------------------------------------------------------------------
/ver4_ban/ver4_ban_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4云封禁', //插件名称,必填
8 | 'version' => '1.4', //插件版本号
9 | 'description' => 'Ver4签到联盟贴吧云回复,提供高性能的贴吧云封禁', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'v4.98+', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => true, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => false, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => false, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_ban/ver4_ban_setting.php:
--------------------------------------------------------------------------------
1 |
4 |
云封禁设置
5 |
6 | '.htmlspecialchars($_GET['msg']).'';
9 | }
10 | if (isset($_GET['save'])) {
11 | option::set('ver4_ban_limit', $_POST['limit']);
12 | option::set('ver4_ban_break_check', $_POST['break_check'] === 'on' ? '1' : '0');
13 | redirect('index.php?mod=admin:setplug&plug=ver4_ban&msg='.urlencode('设置已保存成功!'));
14 | }
15 | ?>
16 |
17 |
--------------------------------------------------------------------------------
/ver4_ban/ver4_ban_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` WHERE `uid` = {$uid}"));
7 |
8 | $globalBanList = ver4_ban_global_ban_list_generate($i, $m);
9 |
10 | if (isset($_GET["api"])) {
11 | $apiReturnArray = [
12 | "code" => 403,
13 | "message" => "禁止访问",
14 | "data" => [],
15 | ];
16 | if (($m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}")))["c"] < 1) {
17 | $apiReturnArray["code"] = -1;
18 | $apiReturnArray["message"] = "您需要先绑定至少一个百度ID才可以使用本功能";
19 | } else {
20 | switch (isset($_GET["m"]) ? $_GET["m"] : "") {
21 | case "save":
22 | $con = isset($_POST['ban_c']) ? sqladds($_POST['ban_c']) : '';
23 | $open = isset($_POST['open']) ? $_POST['open'] : 0;
24 | if (!empty($open)) {
25 | option::uset('ver4_ban_open', 1, $uid);
26 | } else {
27 | option::uset('ver4_ban_open', 0, $uid);
28 | }
29 | if (empty($us['uid'])) {
30 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` (`uid`,`c`) VALUES ({$uid},'{$con}')");
31 | } else {
32 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` SET `c` = '{$con}' WHERE `uid` = {$uid}");
33 | }
34 | $apiReturnArray["code"] = 200;
35 | $apiReturnArray["message"] = "保存成功";
36 | break;
37 | case "add":
38 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
39 | $user = isset($_POST['user']) ? sqladds($_POST['user']) : '';
40 | $tieba = isset($_POST['tieba']) ? sqladds($_POST['tieba']) : '';
41 |
42 | //判定吧务权限
43 | if (option::get('ver4_ban_break_check') === '0' && !ver4_is_manager($pid, $tieba)["isManager"]) {
44 | $apiReturnArray["message"] = "您不是 {$tieba}吧 的吧务";
45 | }
46 |
47 | $rts = isset($_POST['rts']) && !empty($_POST['rts']) ? sqladds($_POST['rts']) : date('Y-m-d');
48 | $rte = isset($_POST['rte']) ? sqladds($_POST['rte']) : '2026-12-31';
49 |
50 | $sy = (int)substr($rts, 0, 4);//取得年份
51 | $sm = (int)substr($rts, 5, 2);//取得月份
52 | $sd = (int)substr($rts, 8, 2);//取得日期
53 | $stime = mktime(0, 0, 0, $sm, $sd, $sy);
54 |
55 | $ey = (int)substr($rte, 0, 4);//取得年份
56 | $em = (int)substr($rte, 5, 2);//取得月份
57 | $ed = (int)substr($rte, 8, 2);//取得日期
58 | $etime = mktime(0, 0, 0, $em, $ed, $ey);
59 |
60 | if (empty($pid) || empty($user) || empty($tieba)) {
61 | $apiReturnArray["message"] = "信息不完整,添加失败";
62 | break;
63 | }
64 |
65 | if ($stime > 1988150400 || $etime > 1988150400 || $stime < 0 || $etime < 0) {
66 | $apiReturnArray["message"] = "开始或者结束时间格式不正确";
67 | break;
68 | }
69 |
70 | if (date('Y-m-d', $stime) != $rts || date('Y-m-d', $etime) != $rte) {
71 | $apiReturnArray["message"] = "开始或者结束时间格式不正确";
72 | break;
73 | }
74 |
75 | if ($stime > $etime) {
76 | $apiReturnArray["message"] = "开始时间不能大于结束时间";
77 | break;
78 | }
79 |
80 | global $m;
81 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
82 | if ($p['uid'] != UID) {
83 | $apiReturnArray["message"] = "你不能替他人添加帖子";
84 | break;
85 | }
86 |
87 | $limit = option::get('ver4_ban_limit');
88 | $t = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}"));
89 | if ($t['c'] >= $limit) {
90 | $apiReturnArray["message"] = "站点设置上限添加{$limit}个百度ID";
91 | break;
92 | }
93 | $ru = explode("\n", $user);
94 | $notExistList = "";
95 | $callbackData = [];
96 | foreach ($ru as $k => $v) {
97 | $v = trim(str_replace(["\r", '@'], '', $v));//去除特殊字符串
98 | //获取信息
99 | $banUserInfo = json_decode((new wcurl("https://tieba.baidu.com/home/get/panel?ie=utf-8&" . (preg_match('/^tb\.1\./', $v) ? "id={$v}" : "un={$v}")))->get(), true);
100 | if ($banUserInfo["no"] === 0) {
101 | $name = $banUserInfo["data"]["name"];
102 | $name_show = $banUserInfo["data"]["name_show"];//昵称仅供标记, 谁都不想在没id的号里面看portrait对吧
103 | $portrait = $banUserInfo["data"]["portrait"];
104 | $callbackData[] = [
105 | "name" => $banUserInfo["data"]["name"],
106 | "name_show" => $banUserInfo["data"]["name_show"],
107 | "portrait" => $banUserInfo["data"]["portrait"],
108 | "tieba_name" => $tieba,
109 | "end" => $etime,
110 | "exist" => true
111 | ];
112 | $t = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}"));
113 | if ($t['c'] < $limit && !empty($v)) {
114 | $m->query("INSERT IGNORE INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` (`uid`,`pid`,`name`,`name_show`,`portrait`,`tieba`,`stime`,`etime`,`date`) VALUES ({$uid},'{$pid}','{$name}','{$name_show}','{$portrait}','{$tieba}','{$stime}','{$etime}',0)");// ON DUPLICATE KEY UPDATE `uid`={$uid},`pid`='{$pid}',`name`='{$name}',`name_show`='{$name_show}',`portrait`='{$portrait}',`tieba`='{$tieba}',`stime`='{$stime}',`etime`='{$etime}'//TODO 插入时更新, 以后说不定用得上
115 | }
116 | } else {
117 | $callbackData[] = ["name" => $v, "exist" => false];
118 | $notExistList .= ", {$v}";//添加不存在之人//某些神秘人无法取得信息
119 | }
120 | }
121 | $apiReturnArray["code"] = 200;
122 | $apiReturnArray["message"] = ($notExistList ? urlencode("部分ID添加成功{$notExistList}未能添加成功") : urlencode('所有ID已添加到封禁列表,如超出限制会自动舍弃,系统稍后会进行封禁~~哇咔咔')) . "。昵称仅供标记,对应用户修改后的昵称并不会实时反馈到本页";
123 | $apiReturnArray["data"] = $callbackData;
124 | break;
125 | case "delete":
126 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
127 | if (!empty($id)) {
128 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `id` = '{$id}' AND `uid` = {$uid}");
129 | $apiReturnArray["code"] = 200;
130 | $apiReturnArray["message"] = "已成功删除该被封禁ID,最迟24小时后该ID不会再被封禁";
131 | $apiReturnArray["data"] = ["id" => $id, "uid" => $uid];
132 | } else {
133 | $apiReturnArray["message"] = "ID不合法";
134 | }
135 | break;
136 | case "empty":
137 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}");
138 | $apiReturnArray["code"] = 200;
139 | $apiReturnArray["message"] = "循环云封禁列表已清空";
140 | break;
141 | case "list":
142 | $apiReturnArray["code"] = 200;
143 | $apiReturnArray["message"] = "成功";
144 | $apiReturnArray["data"] = $globalBanList;
145 | break;
146 | case "search":
147 | $apiReturnArray["data"] = ver4_ban_get_userinfo_by_words(isset($_GET["words"]) ? $_GET["words"] : "");
148 | if (count($apiReturnArray["data"]) === 0) {
149 | $apiReturnArray["code"] = 404;
150 | $apiReturnArray["message"] = "没有找到此用户";
151 | } else {
152 | $apiReturnArray["code"] = 200;
153 | $apiReturnArray["message"] = "成功";
154 | }
155 | break;
156 | case "precheck":
157 | $apiReturnArray["code"] = 200;
158 | $apiReturnArray["message"] = "成功";
159 | $apiReturnArray["data"] = option::get('ver4_ban_break_check') === '1' ? ["isManager" => false, "isBreak" => true] : ver4_is_manager(isset($_GET["pid"]) ? $_GET["pid"] : "", isset($_GET["tieba"]) ? $_GET["tieba"] : "");
160 | break;
161 | }
162 | }
163 | header("content-type: text/json");
164 | echo json_encode($apiReturnArray, JSON_UNESCAPED_UNICODE);
165 | die();
166 | }
167 | loadhead();
168 | $b = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
169 | if ($b['c'] < 1) {
170 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
171 | die;
172 | }
173 |
174 | ?>
175 | 贴吧云封禁
176 |
177 | ' . htmlspecialchars($_GET['success']) . '';
180 | }
181 | if (isset($_GET['error'])) {
182 | echo '' . htmlspecialchars($_GET['error']) . '
';
183 | }
184 |
185 | if (isset($_GET['save'])) {
186 | $con = isset($_POST['ban_c']) ? sqladds($_POST['ban_c']) : '';
187 | $open = isset($_POST['open']) ? $_POST['open'] : 0;
188 | if (!empty($open)) {
189 | option::uset('ver4_ban_open', 1, $uid);
190 | } else {
191 | option::uset('ver4_ban_open', 0, $uid);
192 | }
193 | if (empty($us['uid'])) {
194 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` (`uid`,`c`) VALUES ({$uid},'{$con}')");
195 | } else {
196 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_userset` SET `c` = '{$con}' WHERE `uid` = {$uid}");
197 | }
198 | redirect('index.php?plugin=ver4_ban&success=' . urlencode('您的设置已成功保存'));
199 | }
200 |
201 | if (isset($_GET['duser'])) {
202 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
203 | if (!empty($id)) {
204 | global $m;
205 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `id` = '{$id}' AND `uid` = {$uid}");
206 | redirect('index.php?plugin=ver4_ban&success=' . urlencode('已成功删除该被封禁ID,最迟24小时后该ID不会再被封禁!'));
207 | } else {
208 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('ID不合法'));
209 | }
210 | }
211 | if (isset($_GET['dauser'])) {
212 | global $m;
213 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}");
214 | redirect('index.php?plugin=ver4_ban&success=' . urlencode('循环云封禁列表已成功清空!'));
215 | }
216 | if (isset($_GET['newuser'])) {
217 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
218 | $user = isset($_POST['user']) ? sqladds($_POST['user']) : '';
219 | $tieba = isset($_POST['tieba']) ? sqladds($_POST['tieba']) : '';
220 |
221 | //判定吧务权限
222 | if (option::get('ver4_ban_break_check') === '0' && !ver4_is_manager($pid, $tieba)["isManager"]) {
223 | redirect('index.php?plugin=ver4_ban&error=' . urlencode("您不是 {$tieba}吧 的吧务"));
224 | }
225 |
226 | $rts = isset($_POST['rts']) && !empty($_POST['rts']) ? sqladds($_POST['rts']) : date('Y-m-d');
227 | $rte = isset($_POST['rte']) ? sqladds($_POST['rte']) : '2026-12-31';
228 |
229 | $sy = (int)substr($rts, 0, 4);//取得年份
230 | $sm = (int)substr($rts, 5, 2);//取得月份
231 | $sd = (int)substr($rts, 8, 2);//取得日期
232 | $stime = mktime(0, 0, 0, $sm, $sd, $sy);
233 |
234 | $ey = (int)substr($rte, 0, 4);//取得年份
235 | $em = (int)substr($rte, 5, 2);//取得月份
236 | $ed = (int)substr($rte, 8, 2);//取得日期
237 | $etime = mktime(0, 0, 0, $em, $ed, $ey);
238 |
239 | if (empty($pid) || empty($user) || empty($tieba)) {
240 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('信息不完整,添加失败!'));
241 | }
242 |
243 | if ($stime > 1988150400 || $etime > 1988150400 || $stime < 0 || $etime < 0) {
244 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('开始或者结束时间格式不正确!'));
245 | }
246 |
247 | if (date('Y-m-d', $stime) != $rts || date('Y-m-d', $etime) != $rte) {
248 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('开始或者结束时间格式不正确!'));
249 | }
250 |
251 | if ($stime > $etime) {
252 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('开始时间不能大于结束时间!'));
253 | }
254 |
255 | global $m;
256 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
257 | if ($p['uid'] != UID) {
258 | redirect('index.php?plugin=ver4_ban&error=' . urlencode('你不能替他人添加帖子'));
259 | }
260 |
261 | $limit = option::get('ver4_ban_limit');
262 | $t = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}"));
263 | if ($t['c'] >= $limit) {
264 | redirect('index.php?plugin=ver4_ban&error=' . urlencode("站点设置上限添加{$limit}个百度ID"));
265 | }
266 | $ru = explode("\n", $user);
267 | $notExistList = "";
268 | foreach ($ru as $k => $v) {
269 | $v = trim(str_replace(["\r", '@'], '', $v));//去除特殊字符串
270 | //获取信息
271 | $banUserInfo = json_decode((new wcurl("https://tieba.baidu.com/home/get/panel?ie=utf-8&" . (preg_match('/^tb\.1\./', $v) ? "id={$v}" : "un={$v}")))->get(), true);
272 | if ($banUserInfo["no"] === 0) {
273 | $name = $banUserInfo["data"]["name"];
274 | $name_show = $banUserInfo["data"]["name_show"];//昵称仅供标记, 谁都不想在没id的号里面看portrait对吧
275 | $portrait = preg_replace('/([^?]+)(\?.*|)/', "$1", $banUserInfo["data"]["portrait"]);
276 | $t = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` WHERE `uid` = {$uid}"));
277 | if ($t['c'] < $limit && !empty($v)) {
278 | $m->query("INSERT IGNORE INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_ban_list` (`uid`,`pid`,`name`,`name_show`,`portrait`,`tieba`,`stime`,`etime`,`date`) VALUES ({$uid},'{$pid}','{$name}','{$name_show}','{$portrait}','{$tieba}','{$stime}','{$etime}',0)");// ON DUPLICATE KEY UPDATE `uid`={$uid},`pid`='{$pid}',`name`='{$name}',`name_show`='{$name_show}',`portrait`='{$portrait}',`tieba`='{$tieba}',`stime`='{$stime}',`etime`='{$etime}'//TODO 插入时更新, 以后说不定用得上
279 | }
280 | } else {
281 | $notExistList .= ", {$v}";//添加不存在之人//某些神秘人无法取得信息
282 | }
283 | }
284 | redirect('index.php?plugin=ver4_ban&success=' . ($notExistList ? urlencode("部分ID添加成功{$notExistList}未能添加成功") : urlencode('所有ID已添加到封禁列表,如超出限制会自动舍弃,系统稍后会进行封禁~~哇咔咔')) . "。昵称仅供标记,对应用户修改后的昵称并不会实时反馈到本页");
285 | }
286 | ?>
287 | 基本设置
288 |
289 |
323 |
324 | 用户日志
325 |
326 |
327 |
328 |
335 |
336 |
337 | $list) {?>
339 |
340 | 封禁列表为空
';
343 | } else {
344 | foreach ($list["list"] as $itemOrder => $item) { ?>
345 |
346 |
347 |
348 |
= $item["id"] ?>
349 |
= ($item['date'] == 0 ? "未开始执行" : date('Y-m-d', $item['date'])) ?>
350 |
= $item['tieba'] ?>
351 |
352 |
366 |
367 |
个人主页
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
379 |
380 |
381 | = empty($item['log']) ? '暂无日志' : $item['log'] ?>
382 |
383 |
384 |
387 |
388 |
389 |
390 |
391 |
393 |
394 |
395 |
401 |
408 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 | 添加用户
423 | 清空列表
424 |
425 |
426 |
427 |
428 |
429 |
430 |
436 |
442 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
459 |
510 |
515 |
516 |
517 |
518 |
628 |
--------------------------------------------------------------------------------
/ver4_lottery/cron/dopost.php:
--------------------------------------------------------------------------------
1 | = 12) {
7 | $id = option::get('ver4_lottery_pid');
8 | $sql = "`uid` IN (SELECT `uid` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "users_options` WHERE `name` = 'ver4_lottery_check' AND `value` = '1')";
9 | $max = $m->fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE {$sql}")); //获取ID最大值
10 | if ($id < $max['c']) {
11 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` > {$id} AND {$sql} ORDER BY `id` ASC"));
12 | $td = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
13 | $ad = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));
14 | $rc = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` WHERE `date` > {$td} AND `date` < {$ad} AND `pid` = {$b['id']}"));
15 | if ($rc['c'] < 2) {
16 | $now = time();
17 | $md = $m->fetch_array($m->query("SELECT max(`date`) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` WHERE `pid` = {$b['id']}")); //获取ID最大值
18 | $tjg = $now - $md['c'];
19 | if ($tjg > 1200) {
20 | $token = getToken($b['id']);
21 | if (!empty($token)) {
22 | $result = lottery($b['id'], $token);
23 | if (empty($result['errno'])) {
24 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` (`uid`,`pid`,`result`,`prize`,`date`)
25 | VALUES ({$b['uid']},{$b['id']},'{$result['errmsg']}','{$result['data']['prizeList'][0]['goodsName']}',{$now})");
26 | } else {
27 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` (`uid`,`pid`,`result`,`prize`,`date`)
28 | VALUES ({$b['uid']},{$b['id']},'{$result['errmsg']}','-',{$now})");
29 | }
30 | }
31 | }
32 | }
33 | option::set('ver4_lottery_pid', $b['id']);
34 | } else {
35 | option::set('ver4_lottery_pid', 0);
36 | }
37 | } else {
38 | $d = option::get('ver4_lottery_day');
39 | if ($d != date('d')) {
40 | global $m;
41 | $thirty = time() - 2592000;
42 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` WHERE `date` <= {$thirty}");
43 | }
44 | option::set('ver4_lottery_day', date('d'));
45 | }
46 |
47 |
48 | //清理所有已经解除绑定用户设置的信息
49 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log`");
50 | while ($x = $m->fetch_array($q)) {
51 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
52 | if (empty($b['id'])) {
53 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` WHERE `id` = {$x['id']}");
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/ver4_lottery/ver4_lottery.php:
--------------------------------------------------------------------------------
1 | 知道商城抽奖';
12 | }
13 |
14 | addAction('navi_1', 'ver4_lottery_nav');
15 | addAction('navi_7', 'ver4_lottery_nav');
16 |
17 |
18 | function getToken($pid)
19 | {
20 | $bduss = misc::getCookie($pid);
21 | $tc = new wcurl('https://zhidao.baidu.com/shop/lottery');
22 | $tc->addCookie('BDUSS='.$bduss);
23 | $re = $tc->get();
24 | $token = textMiddle($re, '\'luckyToken\', \'', '\'');
25 | return $token;
26 | }
27 |
28 | function lottery($pid, $token)
29 | {
30 | $nt = time();
31 | $bduss = misc::getCookie($pid);
32 | $head = array();
33 | $head[] = 'Referer: https://zhidao.baidu.com/shop/lottery';
34 | $head[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';
35 | $pl = new wcurl("https://zhidao.baidu.com/shop/submit/lottery?type=0&token={$token}&_={$nt}308", $head);
36 | $pl->addCookie('BDUSS='.$bduss);
37 | $re = $pl->get();
38 | $result = json_decode($re, true);
39 | return $result;
40 | }
41 |
--------------------------------------------------------------------------------
/ver4_lottery/ver4_lottery_callback.php:
--------------------------------------------------------------------------------
1 | query("
11 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_lottery_log` (
12 | `id` int(10) NOT NULL AUTO_INCREMENT,
13 | `uid` int(10) NOT NULL,
14 | `pid` int(10) NOT NULL,
15 | `result` varchar(255) NOT NULL,
16 | `prize` text,
17 | `date` int(10) NOT NULL DEFAULT '0',
18 | PRIMARY KEY (`id`)
19 | ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
20 | ");
21 | }
22 |
23 | /**
24 | * 激活插件时会被调用
25 | */
26 | function callback_init()
27 | {
28 | option::set('ver4_lottery_pid', 0);
29 | option::set('ver4_lottery_day', 0);
30 | cron::set('ver4_lottery_dopost', 'plugins/ver4_lottery/cron/dopost.php', 0, 0, 0);
31 | }
32 |
33 | /**
34 | * 禁用插件时会被调用
35 | */
36 | function callback_inactive()
37 | {
38 | option::del('ver4_lottery_pid');
39 | option::del('ver4_lottery_day');
40 | cron::del('ver4_lottery_dopost');
41 | }
42 |
43 | /**
44 | * 卸载插件时会被调用
45 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
46 | */
47 | function callback_remove()
48 | {
49 | //在这里做点事
50 | global $m;
51 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_lottery_log`");
52 | }
53 |
54 | /**
55 | * 升级插件时会被调用
56 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
57 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
58 | */
59 | function callback_update($ver1, $ver2)
60 | {
61 | //ver1 是当前数据库的版本号
62 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
63 | //在这里做点事
64 | return false; //我不干了!
65 | }
66 |
67 | /**
68 | * 插件自定义保存设置函数
69 | * 插件调用方法:setting.php?mod=setplugin:插件名称
70 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
71 | */
72 | function callback_setting()
73 | {
74 | //在这里做点事
75 | //dump($_POST); //看看前端给我POST了什么东西
76 | }
77 |
--------------------------------------------------------------------------------
/ver4_lottery/ver4_lottery_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4知道商城抽奖', //插件名称,必填
8 | 'version' => '1.0', //插件版本号
9 | 'description' => 'Ver4签到联盟,提供高性能的贴吧云服务', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => false, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => false, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => false, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_lottery/ver4_lottery_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT count(id) AS `c`FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
8 | if ($b['c'] < 1) {
9 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
10 | die;
11 | }
12 | if (isset($_GET['save'])) {
13 | $check = isset($_POST['c']) ? $_POST['c'] : '0';
14 | if (!empty($check)) {
15 | option::uset('ver4_lottery_check', 1, $uid);
16 | } else {
17 | option::uset('ver4_lottery_check', 0, $uid);
18 | }
19 | redirect('index.php?plugin=ver4_lottery&success=' . urlencode('您的设置已成功保存'));
20 | }
21 | ?>
22 | 知道商城抽奖
23 |
24 | ' . htmlspecialchars($_GET['success']) . '';
27 | }
28 | if (isset($_GET['error'])) {
29 | echo '' . htmlspecialchars($_GET['error']) . '
';
30 | }
31 | ?>
32 | 基本设置
33 |
34 |
56 |
57 | 抽奖日志
58 |
59 |
60 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
63 | ?>
64 |
75 |
76 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
79 | while ($r = $m->fetch_array($bid)) {
80 | ?>
81 |
82 |
83 |
84 |
85 | 序号 |
86 | 结果 |
87 | 奖品 |
88 | 时间 |
89 |
90 |
91 |
92 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_lottery_log` WHERE `pid` = {$r['id']} ORDER BY `id` DESC");
95 | while ($x = $m->fetch_array($lr)) {
96 | $a ++;
97 | $date = date('Y-m-d H:i:s', $x['date']);
98 | echo "{$x['id']} | {$x['result']} | {$x['prize']} | {$date} |
";
99 | }
100 | if (empty($a)) {
101 | echo "暂无抽奖记录 | | | |
";
102 | } ?>
103 |
104 |
105 |
106 |
110 |
111 |
112 | 查看奖品
--------------------------------------------------------------------------------
/ver4_post/cron/daily.php:
--------------------------------------------------------------------------------
1 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba`");
11 | while ($x = $m->fetch_array($q)) {
12 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `remain` = {$x['all']},`success` = 0,`error` = 0,`nextdo` = 0 WHERE `id` = {$x['id']}");
13 | }
14 | $td = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
15 | $pinfo = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid`");
16 | while ($rb = $m->fetch_array($pinfo)) {
17 | for ($a=0;$a<24;$a++) {
18 | $b = 0;
19 | $tinfo = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = {$rb['id']} AND `rts` = {$a}");
20 | while ($rt = $m->fetch_array($tinfo)) {
21 | $nt = $td + ($a * 3600) + $b;
22 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `nextdo` = {$nt} WHERE `id` = {$rt['id']}");
23 | $b = $b + 30;
24 | }
25 | }
26 | }
27 | option::set('ver4_post_daily', date('d'));
28 | }
29 |
30 | /*
31 | * 每3天清理日志
32 | * */
33 | $lt = (int)option::get('ver4_post_loglast');
34 | if (time() - $lt > 259200) {
35 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `log` = ''");
36 | option::set('ver4_post_loglast', time());
37 | }
38 |
39 |
40 | //清理所有已经解除绑定用户设置的信息
41 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba`");
42 | while ($x = $m->fetch_array($q)) {
43 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
44 | if (empty($b['id'])) {
45 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` = {$x['id']}");
46 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` SET `tid` = 0 WHERE `tid` = {$x['id']}");
47 | $nu = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "users` WHERE `id` = {$x['uid']}"));
48 | if (empty($nu['id'])) {
49 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = {$x['uid']}");
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/ver4_post/cron/dopost.php:
--------------------------------------------------------------------------------
1 | 0 AND `rts` <= {$hr} AND `rte` >= {$hr} AND `nextdo` < {$now} AND `uid` IN (SELECT `uid` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "users_options` WHERE `name` = 'ver4_post_open' AND `value` = 1) AND `pid` IN (SELECT `pid` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `date` < {$now})";
11 | $max = $m->fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE {$sql}")); //获取ID最大值
12 | if ($do < (int)$max['c'] && !empty((int)$max['c'])) {
13 | $x = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` > {$do} AND {$sql} ORDER BY `id` ASC")); //获取回复贴吧信息
14 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$x['pid']}'")); //获取bduss信息
15 | $s = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = {$x['uid']}"));//获取用户设置信息
16 | if (empty($x['tid'])) {
17 | $tid = getFirstPageTid($x['tname']);
18 | if (count($tid) > 0) {
19 | $x['tid'] = rand_array($tid);
20 | option::set('ver4_post_do', $x['id']);
21 | collect($p['bduss'], $s, $x);
22 | } else {
23 | option::set('ver4_post_do', $x['id']);
24 | }
25 | } else {
26 | option::set('ver4_post_do', $x['id']);
27 | collect($p['bduss'], $s, $x);
28 | }
29 | } else {
30 | option::set('ver4_post_do', 0);
31 | }
32 | }
33 |
34 |
35 | /*
36 | * 汇总资料完成整个发帖过程
37 | * */
38 | function collect($b, $u, $t)
39 | {
40 | global $m;
41 | $now = time();
42 | $pjn = $now + 60;
43 | $content = array();
44 | $ucontent = array();
45 | $nextdo = $now + $t['space'];
46 | $randtime = (int)option::uget('ver4_post_randtime', $t['uid']);
47 | if (!empty($randtime)) {
48 | $nextdo = $now + randNum($t['space']);
49 | }
50 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `date` = {$pjn} WHERE `pid` = {$t['pid']}");
51 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `nextdo` = {$nextdo} WHERE `id` = {$t['id']}");
52 | $c = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `tid` = {$t['id']} AND `uid` = '{$t['uid']}'"); //查询用户设置的回帖内容
53 | while ($rc = $m->fetch_array($c)) {
54 | $content[] = $rc['content'];
55 | } //循环列出用户回帖内容以供随机筛选
56 | if (count($content) < 1) {
57 | $uc = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `tid` = 0 AND `uid` = '{$t['uid']}'"); //查询用户设置的回帖内容
58 | while ($urc = $m->fetch_array($uc)) {
59 | $ucontent[] = $urc['content'];
60 | } //循环列出用户回帖内容以供随机筛选
61 | if (count($ucontent) < 1) {
62 | $con = getTuLing();
63 | } else {
64 | $con = rand_array($ucontent);
65 | }
66 | } else {
67 | $con = rand_array($content); //从内容数据随机取一句
68 | }
69 | $sc = option::get('ver4_post_suf'); //获取系统定义的后缀
70 | $con = $u['cs'] . $con . $u['ce'] . $sc; //生成回复内容
71 | if (!empty($t['qid'])) {
72 | $con = substr($con, 0, 60);
73 | }
74 | $re = sendIt($b, $u, $t, $con); //提交数据至贴吧进行发帖操作
75 | $log = date('Y-m-d H:i:s') . ' 执行结果:' . $re[1] . '
' . $t['log'];
76 | if ($re[0] == 2) {
77 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `remain` = `remain` - 1,`log` = '{$log}',`success` = `success` + 1,`allsuc` = `allsuc` + 1 WHERE `id` = {$t['id']}");
78 | } else {
79 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `remain` = `remain` - 1,`log` = '{$log}',`error` = `error` + 1,`allerr` = `allerr` + 1 WHERE `id` = {$t['id']}");
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/ver4_post/ver4_post.php:
--------------------------------------------------------------------------------
1 | 贴吧云灌水';
12 | }
13 |
14 |
15 | addAction('navi_1', 'ver4_post_nav');
16 | addAction('navi_7', 'ver4_post_nav');
17 |
18 | /*
19 | * 生成时间间隔随机数
20 | * */
21 | function randNum($n)
22 | {
23 | return rand($n, $n + ceil($n / 4));
24 | }
25 |
26 | /*
27 | * 从url中分离tid
28 | * */
29 | function getTid($url)
30 | {
31 | preg_match('/\.com\/p\/(?\d+)/', $url, $tids);
32 | return $tids ['tid'];
33 | }
34 |
35 | /*
36 | * 贴吧post参数整合
37 | * */
38 | function getParameter($data)
39 | {
40 | $sign_str = '';
41 | foreach ($data as $k => $v) {
42 | $sign_str .= $k . '=' . $v;
43 | }
44 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
45 | $data['sign'] = $sign;
46 | return $data;
47 | }
48 |
49 | /*
50 | * 根据BDUSS生成固定位数数字
51 | * */
52 | function findNum($str='')
53 | {
54 | $str = sha1(md5($str));
55 | $str = trim($str);
56 | if (empty($str)) {
57 | return '';
58 | }
59 | $temp=array('1','2','3','4','5','6','7','8','9','0');
60 | $result='';
61 | for ($i=0;$i 2,
93 | '_client_version' => '6.0.0',
94 | '_phone_imei' => '867600020777420',
95 | 'from' => 'tiebawap_bottom',
96 | 'kz' => $tid,
97 | 'pn' => 1,
98 | 'rn' => 10,
99 | 'timestamp' => time() . '516'
100 | );
101 | $tl->set(CURLOPT_RETURNTRANSFER, true);
102 | $rt = $tl->post(getParameter($data));
103 | $result = json_decode($rt, true);
104 | $r = array(
105 | "fid" => $result['forum']['id'],
106 | "tid" => $tid,
107 | "tname" => $result['forum']['name'],
108 | "pname" => $result['post_list'][0]['title'],
109 | );
110 | return $r;
111 | }
112 |
113 |
114 | /*
115 | * 获得帖子第一页内容
116 | * */
117 | function getFirstPageTid($name)
118 | {
119 | $tid = array();
120 | $tl = new wcurl('http://c.tieba.baidu.com/c/f/frs/page');
121 | $data = array(
122 | '_client_id' => 'wappc_1470896832265_330',
123 | '_client_type' => 2,
124 | '_client_version' => '5.1.3',
125 | '_phone_imei' => '867600020777420',
126 | 'from' => 'baidu_appstore',
127 | 'kw' => $name,
128 | 'model' => 'HUAWEI MT7-TL10',
129 | 'pn' => 1,
130 | 'rn' => 33,
131 | 'st_type' => 'tb_forumlist',
132 | 'timestamp' => time() . '516'
133 | );
134 | $tl->set(CURLOPT_RETURNTRANSFER, true);
135 | $rt = $tl->post(getParameter($data));
136 | $result = json_decode($rt, true)['thread_list'];
137 | foreach ($result as $v) {
138 | $tid[] = $v['id'];
139 | }
140 | unset($tid[0],$tid[1],$tid[2]);
141 | return $tid;
142 | }
143 |
144 | /*
145 | * 发表回复(支持楼中楼)
146 | * */
147 | function sendIt($b, $u, $t, $c)
148 | {
149 | $tp = new wcurl('http://c.tieba.baidu.com/c/c/post/add');
150 | $data = array(
151 | 'BDUSS' => $b,
152 | '_client_id' => 'wappc_147' . substr(findNum($b), 0, 10) . '_' . substr(findNum($b), 5, 3),
153 | '_client_type' => $u['cat'] == 5 ? rand(1, 4) : $u['cat'],
154 | '_client_version' => '7.9.2',
155 | '_phone_imei' => md5($b),
156 | 'anonymous' => 1,
157 | 'content' => $c,
158 | 'fid' => $t ['fid'],
159 | 'from' => 'appstore',
160 | 'is_ad' => 0,
161 | 'kw' => $t ['tname'],
162 | 'model' => 'HUAWEI MT7-TL10',
163 | 'new_vcode' => 1,
164 | 'quote_id' => !empty($t['qid']) ? $t['qid'] : '',
165 | 'tbs' => misc::getTbs(0, $b),
166 | 'tid' => $t['tid'],
167 | 'timestamp' => time() . '516',
168 | 'vcode_tag' => 12,
169 | );
170 | $tp->set(CURLOPT_RETURNTRANSFER, true);
171 | $rt = $tp->post(getParameter($data));
172 | $re = json_decode($rt, true);
173 | if (!$re) {
174 | return array(0, 'JSON 解析错误');
175 | }
176 | if ($re ['error_code'] == 0) {
177 | return array(2, "使用第" . $u['cat'] . '种客户端发帖成功');
178 | } elseif ($re ['error_code'] == 5) {
179 | return array(5, "需要输入验证码,请检查你是否已经关注该贴吧。");
180 | } elseif ($re ['error_code'] == 220034) {
181 | return array(220034, "您的操作太频繁了!");
182 | } elseif ($re ['error_code'] == 340016) {
183 | return array(340016, "您已经被封禁");
184 | } elseif ($re ['error_code'] == 232007) {
185 | return array(232007, "您输入的内容不合法,请修改后重新提交。");
186 | } else {
187 | return array($re ['error_code'], "未知错误,错误代码:" . $re ['error_code']);
188 | }
189 | }
190 |
191 | /*
192 | * 获取帖子指定楼层信息
193 | * */
194 | function getFloorInfo($tid, $pn, $floor)
195 | {
196 | $tl = new wcurl('http://c.tieba.baidu.com/c/f/pb/page');
197 | $data = array(
198 | '_client_type' => 2,
199 | '_client_version' => '6.0.0',
200 | '_phone_imei' => '867600020777420',
201 | 'from' => 'tiebawap_bottom',
202 | 'kz' => $tid,
203 | 'pn' => $pn,
204 | 'rn' => 30,
205 | 'timestamp' => time() . '516'
206 | );
207 | $tl->set(CURLOPT_RETURNTRANSFER, true);
208 | $rt = $tl->post(getParameter($data));
209 | $result = json_decode($rt, true)['post_list'];
210 | $pid = 0;
211 | foreach ($result as $v) {
212 | if ($v['floor'] == $floor) {
213 | $pid = $v['id'];
214 | }
215 | }
216 | return $pid;
217 | }
218 |
219 | /*
220 | * 获取图灵机器人内容
221 | * */
222 | function getTuLing()
223 | {
224 | $re = wcurl::xget('http://tuling123.tbsign.cn/index.php?mod=index');
225 | $r = json_decode($re, true);
226 | if ($r['code'] != 100000) {
227 | $content = getJuZiMi();
228 | } else {
229 | $content = $r['text'];
230 | }
231 | return $content;
232 | }
233 |
234 | /*
235 | * 从m.juzimi.com/ju获取随机内容
236 | * By n0099 四叶重工
237 | * */
238 | function getJuZiMi()
239 | {
240 | //Note7 ( ̄▽ ̄)~*
241 | $curl = new wcurl('http://m.juzimi.com/ju/', array('User-Agent: Mozilla/5.0 (Linux; Android 6.0; SM-N930F Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537.36'));
242 | $curl -> set(CURLOPT_FOLLOWLOCATION, true);
243 | preg_match('/(.+)<\/h1>/', $curl -> exec(), $curl_result);
244 | return $curl_result[1];
245 | }
246 |
247 |
248 | //获取指定贴吧第一页tie
249 | /*function allTid($name)
250 | {
251 | $head = array();
252 | $head[] = 'Content-Type: application/x-www-form-urlencoded';
253 | $head[] = 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/021.021; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.1.16352';
254 | $tl = new wcurl('http://c.tieba.baidu.com/c/f/frs/page', $head);
255 | $data = array(
256 | '_client_id' => 'wappc_1470896832265_330',
257 | '_client_type' => 2,
258 | '_client_version' => '5.1.3',
259 | '_phone_imei' => '867600020777420',
260 | 'from' => 'baidu_appstore',
261 | 'kw' => $name,
262 | 'model' => 'HUAWEI MT7-TL10',
263 | 'pn' => 1,
264 | 'rn' => 33,
265 | 'st_type' => 'tb_forumlist',
266 | 'timestamp' => time() . '516'
267 | );
268 | $sign_str = '';
269 | foreach ($data as $k => $v) $sign_str .= $k . '=' . $v;
270 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
271 | $data['sign'] = $sign;
272 | $tl->set(CURLOPT_RETURNTRANSFER, true);
273 | $rt = $tl->post($data);
274 | $result = json_decode($rt, true)['thread_list'];
275 | $tid = array();
276 | foreach ($result as $v) {
277 | $tid[] = $v['id'];
278 | }
279 | unset($tid[0],$tid[1],$tid[2]);
280 | return $tid;
281 | }*/
282 |
283 | //添加帖子URL时获取帖子信息
284 | /*function get_tid($url)
285 | {
286 | $tieurl = $url;
287 | preg_match('/\.com\/p\/(?\d+)/', $tieurl, $tids);
288 | $tid = $tids ['tid'];
289 | $ch = curl_init('http://tieba.baidu.com/p/' . $tid);
290 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
291 | $contents = curl_exec($ch);
292 | curl_close($ch);
293 |
294 | preg_match('/fname="(.+?)"/', $contents, $fnames);
295 | preg_match('|(.*?)|s', $contents, $post_names);
296 |
297 | $fid = get_fid($fnames[1]);
298 | $tid = get_random_tid($url);
299 |
300 | $post_name = str_replace('_' . $fnames[1] . '吧_百度贴吧', '', $post_names[1]);
301 |
302 | $result = json_encode(array(
303 | "fid" => $fid,
304 | "tid" => $tid,
305 | "tname" => $fnames[1],
306 | "pname" => $post_name,
307 | ), JSON_UNESCAPED_UNICODE);
308 | return $result;
309 | }*/
310 |
311 | //获得fid
312 | /*function get_fid($tname)
313 | {
314 | $x = wcurl::xget("http://tieba.baidu.com/i/data/get_fid_by_fname?fname={$tname}");
315 | $r = json_decode();
316 |
317 | $info = file_get_contents('http://tieba.baidu.com/i/data/get_fid_by_fname?fname=' . $tname);
318 | preg_match('/fid":(.*?)},/', $info, $fids);
319 | return $fids[1];
320 | }*/
321 |
322 |
323 | //发表帖子回复
324 | /*function client_rppost($bduss, $tieba, $content)
325 | {
326 | global $m;
327 | $uid = $tieba['uid'];
328 | $s = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = {$uid}"));
329 | if ($s ['cat'] == 5) {
330 | $s ['cat'] = rand(1, 4);
331 | }
332 | $head = array();
333 | $head[] = 'Content-Type: application/x-www-form-urlencoded';
334 | $head[] = 'User-Agent: Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE72-1/021.021; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.1.16352';
335 | $tp = new wcurl('http://c.tieba.baidu.com/c/c/post/add',$head);
336 | $formdata = array(
337 | 'BDUSS' => $bduss,
338 | '_client_id' => 'wappc_147' . substr(findNum($bduss),0,10) . '_' . substr(findNum($bduss),5,3),
339 | '_client_type' => $s['cat'],
340 | '_client_version' => '6.6.9',
341 | '_phone_imei' => md5($bduss),
342 | 'anonymous' => 1,
343 | 'content' => $content,
344 | 'fid' => $tieba ['fid'],
345 | 'from' => 'appstore',
346 | 'is_ad' => 0,
347 | 'kw' => $tieba ['tname'],
348 | 'model' => 'HUAWEI MT7-TL10',
349 | 'new_vcode' => 1,
350 | 'quote_id' => !empty($tieba ['qid']) ? $tieba ['qid'] : '',
351 | 'tbs' => misc::getTbs(0,$bduss),
352 | 'tid' => $tieba ['tid'],
353 | 'vcode_tag' => 11,
354 | );
355 | $adddata = '';
356 | foreach ($formdata as $k => $v)
357 | $adddata .= $k . '=' . $v;
358 | $sign = strtoupper(md5($adddata . 'tiebaclient!!!'));
359 | $formdata ['sign'] = $sign;
360 | $tp->set(CURLOPT_RETURNTRANSFER, true);
361 | $rt = $tp->post($formdata);
362 | $re = json_decode($rt, true);
363 | switch ($s ['cat']) {
364 | case '1' :
365 | $client_res = "iphone";
366 | break;
367 | case '2' :
368 | $client_res = "android";
369 | break;
370 | case '3' :
371 | $client_res = "WindowsPhone";
372 | break;
373 | case '4' :
374 | $client_res = "Windows8";
375 | break;
376 | }
377 | if (!$re) return array(0, 'JSON 解析错误');
378 | if ($re ['error_code'] == 0) return array(2, "使用" . $client_res . '客户端发帖成功');
379 | else if ($re ['error_code'] == 5) return array(5, "需要输入验证码,请检查你是否已经关注该贴吧。");
380 | else if ($re ['error_code'] == 7) return array(7, "您的操作太频繁了!");
381 | else if ($re ['error_code'] == 8) return array(8, "您已经被封禁");
382 | else return array($re ['error_code'], "未知错误,错误代码:" . $re ['error_code']);
383 | }*/
384 |
385 | //获取指定帖子的楼层信息
386 | /*function getQid($tid,$pn,$floor){
387 | $tl = new wcurl('http://c.tieba.baidu.com/c/f/pb/page');
388 | $data = array(
389 | '_client_type' => 2,
390 | '_client_version' => '6.0.0',
391 | '_phone_imei' => '867600020777420',
392 | 'from' => 'tiebawap_bottom',
393 | 'kz' => $tid,
394 | 'pn' => $pn,
395 | 'rn' => 30,
396 | 'timestamp' => time() . '516'
397 | );
398 | $sign_str = '';
399 | foreach ($data as $k => $v) $sign_str .= $k . '=' . $v;
400 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
401 | $data['sign'] = $sign;
402 | $tl->set(CURLOPT_RETURNTRANSFER, true);
403 | $rt = $tl->post($data);
404 | $result = json_decode($rt,true)['post_list'];
405 | $pid = 0;
406 | foreach ($result as $v){
407 | if ($v['floor'] == $floor) $pid = $v['id'];
408 | }
409 | return $pid;
410 | }*/
411 |
412 |
413 | //获得贴吧帖子tid
414 | /*function get_random_tid($url)
415 | {
416 | $cu = explode('/p/', $url);
417 | if (strpos($cu[1], '?')) {
418 | $tid = textMiddle($url, '/p/', '?');
419 | } else {
420 | $tid = $cu[1];
421 | }
422 | return $tid;
423 | }*/
424 |
425 |
426 |
427 | /*
428 | * 随机抽取内容获取接口
429 | * */
430 | /*function get_random_content()
431 | {
432 | $ac = rand_array(array(0));
433 | switch ($ac){
434 | case 0:
435 | $content = tuLing();
436 | break;
437 | case 1:
438 | $content = moLi();
439 | break;
440 | default:
441 | $content = tuLing();
442 | break;
443 | }
444 | return $content;
445 | }*/
446 |
447 | /*
448 | * 图灵API接口函数
449 | * */
450 | /*function tuLing(){
451 | $apikey = option::get('ver4_post_apikey');
452 | if (!empty($apikey)){
453 | $tl = new wcurl('http://www.tuling123.com/openapi/api');
454 | $info = array('讲个笑话');
455 | $data = array('key' => $apikey, 'info' => rand_array($info));
456 | $re = $tl->post($data);
457 | $r = json_decode($re,true);
458 | } else {
459 | $r['code'] = -1;
460 | }
461 | if ($r['code'] != 100000) {
462 | $content = getContent();
463 | } else {
464 | $content = $r['text'];
465 | }
466 | return $content;
467 | }*/
468 |
469 | /*
470 | * 茉莉机器人API接口函数
471 | * */
472 | /*function moLi(){
473 | $ml = new wcurl('http://www.itpk.cn/jsonp/api.php?question=%E7%AC%91%E8%AF%9D');
474 | $re = $ml->get();
475 | $r = json_decode($re,true);
476 | return $r['content'];
477 | }*/
478 |
--------------------------------------------------------------------------------
/ver4_post/ver4_post_callback.php:
--------------------------------------------------------------------------------
1 | query("
12 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_post_content` (
13 | `id` int(10) NOT NULL AUTO_INCREMENT,
14 | `tid` int(10) NOT NULL DEFAULT '0',
15 | `uid` int(10) NOT NULL,
16 | `content` text,
17 | `date` int(10) NOT NULL,
18 | PRIMARY KEY (`id`)
19 | ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
20 | ");
21 | $m->query("
22 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_post_tieba` (
23 | `id` int(10) NOT NULL AUTO_INCREMENT,
24 | `uid` int(10) NOT NULL,
25 | `pid` int(10) NOT NULL,
26 | `fid` int(10) NOT NULL,
27 | `tid` varchar(15) NOT NULL,
28 | `qid` varchar(20) NOT NULL DEFAULT '0',
29 | `rts` int(10) NOT NULL DEFAULT '0',
30 | `rte` int(10) NOT NULL DEFAULT '24',
31 | `tname` varchar(255) NOT NULL,
32 | `pname` varchar(255) NOT NULL,
33 | `all` int(10) NOT NULL DEFAULT '0',
34 | `space` int(10) NOT NULL DEFAULT '60',
35 | `remain` int(10) NOT NULL DEFAULT '0',
36 | `success` int(10) NOT NULL DEFAULT '0',
37 | `error` int(10) NOT NULL DEFAULT '0',
38 | `log` text,
39 | `date` int(10) NOT NULL,
40 | `nextdo` int(10) NOT NULL DEFAULT '0',
41 | PRIMARY KEY (`id`)
42 | ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
43 | ");
44 | $m->query("
45 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_post_userset` (
46 | `id` int(10) NOT NULL AUTO_INCREMENT,
47 | `uid` int(10) NOT NULL,
48 | `cat` int(10) NOT NULL DEFAULT '5',
49 | `cs` varchar(255) DEFAULT NULL,
50 | `ce` varchar(255) DEFAULT NULL,
51 | `date` int(10) NOT NULL,
52 | PRIMARY KEY (`id`)
53 | ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
54 | ");
55 | }
56 |
57 | /**
58 | * 激活插件时会被调用
59 | */
60 | function callback_init()
61 | {
62 | option::set('ver4_post_dt', 10);
63 | option::set('ver4_post_all', 200);
64 | option::set('ver4_post_ts', 300);
65 | option::set('ver4_post_daily', 0);
66 | option::set('ver4_post_do', 0);
67 | option::set('ver4_post_pid', 0);
68 | option::set('ver4_post_suf', 0);
69 | option::set('ver4_post_apikey', '');
70 | cron::set('ver4_post_daily', 'plugins/ver4_post/cron/daily.php', 0, 0, 0);
71 | cron::set('ver4_post_dopost', 'plugins/ver4_post/cron/dopost.php', 0, 0, 0);
72 | }
73 |
74 | /**
75 | * 禁用插件时会被调用
76 | */
77 | function callback_inactive()
78 | {
79 | option::del('ver4_post_dt');
80 | option::del('ver4_post_all');
81 | option::del('ver4_post_ts');
82 | option::del('ver4_post_daily');
83 | option::del('ver4_post_do');
84 | option::del('ver4_post_pid');
85 | option::del('ver4_post_suf');
86 | option::del('ver4_post_apikey');
87 | cron::del('ver4_post_daily');
88 | cron::del('ver4_post_dopost');
89 | }
90 |
91 | /**
92 | * 卸载插件时会被调用
93 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
94 | */
95 | function callback_remove()
96 | {
97 | //在这里做点事
98 | global $m;
99 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_post_userset`");
100 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_post_tieba`");
101 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_post_content`");
102 | }
103 |
104 | /**
105 | * 升级插件时会被调用
106 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
107 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
108 | */
109 | function callback_update($ver1, $ver2)
110 | {
111 | //ver1 是当前数据库的版本号
112 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
113 | //在这里做点事
114 | return false; //我不干了!
115 | }
116 |
117 | /**
118 | * 插件自定义保存设置函数
119 | * 插件调用方法:setting.php?mod=setplugin:插件名称
120 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
121 | */
122 | function callback_setting()
123 | {
124 | //在这里做点事
125 | //dump($_POST); //看看前端给我POST了什么东西
126 | }
127 |
--------------------------------------------------------------------------------
/ver4_post/ver4_post_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4云灌水', //插件名称,必填
8 | 'version' => '1.5', //插件版本号
9 | 'description' => 'Ver4签到联盟贴吧云回复,提供高性能的贴吧云回', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => true, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => true, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => true, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_post/ver4_post_setting.php:
--------------------------------------------------------------------------------
1 |
4 | 云灌水设置
5 |
6 | '.htmlspecialchars($_GET['msg']).'';
9 | }
10 | if (isset($_GET['save'])) {
11 | option::set('ver4_post_dt', $_POST['vpdt']);
12 | option::set('ver4_post_all', $_POST['vpat']);
13 | option::set('ver4_post_ts', $_POST['vps']);
14 | option::set('ver4_post_suf', $_POST['suf']);
15 | option::set('ver4_post_apikey', $_POST['key']);
16 | redirect('index.php?mod=admin:setplug&plug=ver4_post&msg='.urlencode('设置已保存成功!'));
17 | }
18 | ?>
19 |
20 |
--------------------------------------------------------------------------------
/ver4_post/ver4_post_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT count(id) AS `c`FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
13 | if ($b['c'] < 1) {
14 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
15 | die;
16 | }
17 | ?>
18 | 客户端回帖
19 |
20 | ' . htmlspecialchars($_GET['success']) . '';
23 | }
24 | if (isset($_GET['error'])) {
25 | echo '' . htmlspecialchars($_GET['error']) . '
';
26 | }
27 | if (isset($_GET['save'])) {
28 | $usl = isset($_POST['usl']) && is_numeric($_POST['usl']) ? sqladds($_POST['usl']) : 5;
29 | $bcs = isset($_POST['ban_cs']) ? sqladds($_POST['ban_cs']) : '';
30 | $bce = isset($_POST['ban_ce']) ? sqladds($_POST['ban_ce']) : '';
31 | $open = isset($_POST['open']) ? $_POST['open'] : 0;
32 | $randtime = isset($_POST['randtime']) ? $_POST['randtime'] : 0;
33 |
34 | if (!empty($open)) {
35 | option::uset('ver4_post_open', 1, $uid);
36 | } else {
37 | option::uset('ver4_post_open', 0, $uid);
38 | }
39 |
40 | if (!empty($randtime)) {
41 | option::uset('ver4_post_randtime', 1, $uid);
42 | } else {
43 | option::uset('ver4_post_randtime', 0, $uid);
44 | }
45 |
46 | if ($usl > 5 || $usl < 1) {
47 | $usl = 5;
48 | }//判断客户端选择范围
49 |
50 | $cc = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = {$uid}"));
51 | if (empty($cc['uid'])) {
52 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` (`uid`,`cat`,`cs`,`ce`) VALUES ({$uid},'{$usl}','{$bcs}','{$bce}')");
53 | } else {
54 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` SET `cat` = '{$usl}',`cs` = '{$bcs}',`ce`='{$bce}' WHERE `uid` = {$uid}");
55 | }
56 | redirect('index.php?plugin=ver4_post&success=' . urlencode('您的设置已成功保存'));
57 | }
58 | if (isset($_GET['newtiebaurl'])) {
59 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
60 | $url = isset($_POST['tiebaurl']) ? sqladds($_POST['tiebaurl']) : '';
61 |
62 | $rts = isset($_POST['rts']) && is_numeric($_POST['rts']) ? sqladds($_POST['rts']) : 0;
63 | $rte = isset($_POST['rte']) && is_numeric($_POST['rte']) ? sqladds($_POST['rte']) : 24;
64 |
65 | $nqoute = isset($_POST['nqoute']) && is_numeric($_POST['nqoute']) ? sqladds($_POST['nqoute']) : 0;
66 | $npage = isset($_POST['npage']) && is_numeric($_POST['npage']) ? sqladds($_POST['npage']) : 0;
67 |
68 | $ptime = isset($_POST['time']) && is_numeric($_POST['time']) ? sqladds($_POST['time']) : 1;
69 | $space = isset($_POST['space']) && is_numeric($_POST['space']) ? sqladds($_POST['space']) : 30;
70 |
71 | global $m;
72 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
73 | if ($p['uid'] != UID) {
74 | redirect('index.php?plugin=ver4_post&error=' . urlencode('你不能替他人添加帖子'));
75 | }
76 |
77 | $up1 = $m->fetch_array($m->query("SELECT SUM(`all`) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = '{$pid}'"));
78 | $ln = $all - $up1['c'];
79 |
80 | if ($ptime <= 0) {
81 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,您输入参数非法!'));
82 | }
83 | if ($ln < $ptime) {
84 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,您的剩余可用每日回复次数不足,添加失败!'));
85 | }
86 | $s = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = " . UID));
87 | if ($s['c'] < 1) {
88 | redirect('index.php?plugin=ver4_post&error=' . urlencode('你必须先完成基本设置'));
89 | }
90 | if ($space < 30) {
91 | $space = 30;
92 | }
93 |
94 |
95 | if ($rts > $rte) {
96 | $rt = $rts;
97 | $rts = $rte;
98 | $rte = $rt;
99 | }
100 | if (!empty($url)) {
101 | $r = getPage(getTid($url));
102 | if (!empty($r['fid'])) {
103 | if (!empty($nqoute) && !empty($npage)) {
104 | $qid = getFloorInfo($r['tid'], $npage, $nqoute);
105 | if (empty($qid)) {
106 | redirect('index.php?plugin=ver4_post&error=' . urlencode('楼层信息错误,没有获取到楼层ID!'));
107 | } else {
108 | $r['pname'] = "【{$nqoute}楼】" . $r['pname'];
109 | }
110 | } else {
111 | $qid = 0;
112 | }
113 | $now = time();
114 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` (`uid`,`pid`,`fid`,`tid`,`qid`,`rts`,`rte`,`all`,`space`,`tname`,`pname`) VALUES (" . UID . ",'{$pid}','{$r['fid']}','{$r['tid']}','{$qid}','{$rts}','{$rte}','{$ptime}','{$space}','{$r['tname']}','{$r['pname']}')");
115 | redirect('index.php?plugin=ver4_post&success=' . urlencode('帖子添加成功啦,静静的等待回复吧~~哇咔咔'));
116 | } else {
117 | redirect('index.php?plugin=ver4_post&error=' . urlencode('没有获取到帖子和贴吧信息'));
118 | }
119 | } else {
120 | redirect('index.php?plugin=ver4_post&error=' . urlencode('您输入的URL不合法或者为空'));
121 | }
122 | }
123 |
124 | if (isset($_GET['newtiebaname'])) {
125 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
126 | $tname = isset($_POST['tname']) ? sqladds($_POST['tname']) : '';
127 |
128 | $rts = isset($_POST['rts']) && is_numeric($_POST['rts']) ? sqladds($_POST['rts']) : 0;
129 | $rte = isset($_POST['rte']) && is_numeric($_POST['rte']) ? sqladds($_POST['rte']) : 24;
130 |
131 | $ptime = isset($_POST['time']) && is_numeric($_POST['time']) ? sqladds($_POST['time']) : 1;
132 | $space = isset($_POST['space']) && is_numeric($_POST['space']) ? sqladds($_POST['space']) : 30;
133 |
134 | global $m;
135 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
136 |
137 | if ($p['uid'] != UID) {
138 | redirect('index.php?plugin=ver4_post&error=' . urlencode('你不能替他人添加贴吧'));
139 | }
140 | if ($ptime <= 0) {
141 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,您输入参数非法!'));
142 | }
143 |
144 | $up2 = $m->fetch_array($m->query("SELECT SUM(`all`) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = '{$pid}'"));
145 | $ln = $all - $up2['c'];
146 | if ($ln < $ptime) {
147 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,您的剩余可用每日回复次数不足,添加失败!'));
148 | }
149 |
150 | $s = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = " . UID));
151 | if ($s['c'] < 1) {
152 | redirect('index.php?plugin=ver4_post&error=' . urlencode('你必须先完成基本设置'));
153 | }
154 |
155 | if ($space < 30) {
156 | $space = 30;
157 | }
158 |
159 | if ($rts > $rte) {
160 | $rt = $rts;
161 | $rts = $rte;
162 | $rte = $rt;
163 | }
164 | if (!empty($tname)) {
165 | if (count(getFirstPageTid($tname)) > 0) {
166 | $now = time();
167 | $fid = getFid($tname);
168 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` (`uid`,`pid`,`fid`,`tid`,`rts`,`rte`,`all`,`space`,`tname`,`pname`) VALUES (" . UID . ",'{$pid}','{$fid}',0,'{$rts}','{$rte}','{$ptime}','{$space}','{$tname}',0)");
169 | redirect('index.php?plugin=ver4_post&success=' . urlencode('贴吧添加成功啦,静静的等待回复吧~~哇咔咔'));
170 | } else {
171 | redirect('index.php?plugin=ver4_post&error=' . urlencode('没有获取到贴吧信息'));
172 | }
173 | } else {
174 | redirect('index.php?plugin=ver4_post&error=' . urlencode('您输入的吧名不合法或者为空'));
175 | }
176 | }
177 |
178 | if (isset($_GET['newtiebacontent'])) {
179 | $con = isset($_POST['content']) ? sqladds($_POST['content']) : '';
180 | $tid = isset($_POST['tid']) && is_numeric($_POST['tid']) ? sqladds($_POST['tid']) : 0;
181 |
182 | global $m;
183 | if (!empty($tid)) {
184 | $tieba = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` = '{$tid}'"));
185 | if ($tieba['uid'] != UID) {
186 | redirect('index.php?plugin=ver4_post&error=' . urlencode('您不可以替他人添加内容'));
187 | }
188 | }
189 |
190 | if (!empty($con)) {
191 | $rc = explode("\n", $con);
192 | $now = time();
193 | foreach ($rc as $v) {
194 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` (`uid`,`tid`,`content`,`date`) VALUES (" . UID . ",'{$tid}','{$v}',{$now})");
195 | }
196 | redirect('index.php?plugin=ver4_post&success=' . urlencode('内容添加成功啦,静静的等待出现在回复吧~~哇咔咔'));
197 | } else {
198 | redirect('index.php?plugin=ver4_post&error=' . urlencode('您输入的内容为空'));
199 | }
200 | }
201 | if (isset($_GET['deltiebaurl'])) {
202 | global $m;
203 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `uid` = " . UID);
204 | redirect('index.php?plugin=ver4_post&success=' . urlencode('帖子列表已被清空'));
205 | }
206 | if (isset($_GET['delallcontent'])) {
207 | global $m;
208 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `uid` = " . UID);
209 | redirect('index.php?plugin=ver4_post&success=' . urlencode('内容列表已被清空'));
210 | }
211 | if (isset($_GET['delurl'])) {
212 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
213 | if (!empty($id)) {
214 | global $m;
215 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` = '{$id}' AND `uid` = " . UID);
216 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` SET `tid` = 0 WHERE `tid` = '{$id}' AND `uid` = " . UID);
217 | redirect('index.php?plugin=ver4_post&success=' . urlencode('已成功删除帖子地址'));
218 | } else {
219 | redirect('index.php?plugin=ver4_post&error=' . urlencode('ID不合法'));
220 | }
221 | }
222 | if (isset($_GET['delcon'])) {
223 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
224 | if (!empty($id)) {
225 | global $m;
226 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `id` = '{$id}' AND `uid` = " . UID);
227 | redirect('index.php?plugin=ver4_post&success=' . urlencode('已成功删除该内容'));
228 | } else {
229 | redirect('index.php?plugin=ver4_post&error=' . urlencode('ID不合法'));
230 | }
231 | }
232 | if (isset($_GET['cturl'])) {
233 | $id = isset($_GET['id']) && is_numeric($_GET['id']) ? sqladds($_GET['id']) : '';
234 | $rts = isset($_POST['rts']) && is_numeric($_POST['rts']) ? sqladds($_POST['rts']) : 0;
235 | $rte = isset($_POST['rte']) && is_numeric($_POST['rte']) ? sqladds($_POST['rte']) : 24;
236 | $ptime = isset($_POST['time']) && is_numeric($_POST['time']) ? sqladds($_POST['time']) : 1;
237 | $space = isset($_POST['space']) && is_numeric($_POST['space']) ? sqladds($_POST['space']) : 60;
238 |
239 | if ($space < 60) {
240 | $space = 60;
241 | }
242 | if ($rts > $rte) {
243 | $rt = $rts;
244 | $rts = $rte;
245 | $rte = $rt;
246 | }
247 |
248 | $x = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` = '{$id}'"));
249 | $xc = $m->fetch_array($m->query("SELECT SUM(`all`) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `id` != '{$id}' AND `pid` = {$x['pid']}"));
250 | $ln = $all - $xc['c'];
251 | if ($ptime <= 0) {
252 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,您输入参数非法!'));
253 | }
254 | if ($ln < $ptime) {
255 | redirect('index.php?plugin=ver4_post&error=' . urlencode('啊哦,该百度ID剩余可用每日回复次数不足,修改失败!'));
256 | }
257 | if ($x['uid'] == UID) {
258 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` SET `rts` = '{$rts}',`rte` = '{$rte}',`space` = '{$space}',`all` = '{$ptime}' WHERE `id` = '{$id}'");
259 | redirect('index.php?plugin=ver4_post&success=' . urlencode('已成功修改'));
260 | } else {
261 | redirect('index.php?plugin=ver4_post&error=' . urlencode('ID不合法'));
262 | }
263 | }
264 | if (isset($_GET['ctcon'])) {
265 | $id = isset($_GET['id']) && is_numeric($_GET['id']) ? sqladds($_GET['id']) : '';
266 | $con = isset($_POST['content']) ? sqladds($_POST['content']) : '';
267 | $tid = isset($_POST['tid']) && is_numeric($_POST['tid']) ? sqladds($_POST['tid']) : 0;
268 |
269 | global $m;
270 | $x = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `id` = '{$id}'"));
271 | if ($x['uid'] == UID) {
272 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` SET `tid` = '{$tid}',`content` = '{$con}' WHERE `id` = '{$id}'");
273 | redirect('index.php?plugin=ver4_post&success=' . urlencode('已成功修改'));
274 | } else {
275 | redirect('index.php?plugin=ver4_post&error=' . urlencode('ID不合法'));
276 | }
277 | }
278 | ?>
279 |
289 |
290 |
291 | 当天的回帖记录
292 | 新添加帖子或者贴吧及次数修改第二天生效
293 |
294 |
295 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
298 | ?>
299 |
300 | fetch_array($bid)) {
302 | ?>
303 | - = $x['name'] ?>
305 |
306 |
310 |
311 |
312 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
315 | while ($r = $m->fetch_array($bid)) {
316 | ?>
317 |
318 |
319 |
320 |
321 | 序号 |
322 | 贴吧 |
323 | 帖子 |
324 | 剩余 |
325 | 成功 |
326 | 失败 |
327 | 日志 |
328 |
329 |
330 |
331 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = {$r['id']}");
334 | while ($r1 = $m->fetch_array($tt)) {
335 | $a++; ?>
336 |
337 | = $r1['id'] ?> |
338 | = $r1['tname'] ?>
340 | |
341 | = !empty($r1['pname']) ? '' . $r1['pname'] . '' : '随机回复' ?> |
342 | = $r1['remain'] ?> |
343 | = $r1['success'] ?> |
344 | = $r1['error'] ?> |
345 |
346 | 查看
348 | |
349 |
350 |
352 |
353 |
354 |
360 |
361 |
362 | = empty($r1['log']) ? '暂无日志' : $r1['log'] ?>
363 |
364 |
365 |
369 |
370 |
371 |
372 | 暂无帖子 | | | | | | | | ';
376 | } ?>
377 |
378 |
379 |
380 |
384 |
385 |
386 |
387 |
390 | 温馨提示
391 |
392 |
393 | 1、使用云灌水(客户端回帖)有被全吧封禁的危险!
394 |
395 |
396 | 2、尽量在水楼里使用呦,避免影响吧务工作~~
397 |
398 |
399 | 3、因使用云灌水导致被全吧本站概不负责
400 |
401 |
402 | 扫帖说明
403 |
404 | 1、系统自动识别置顶帖并跳过
405 |
406 | fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_userset` WHERE `uid` = " . UID)); ?>
410 | 基本设置
411 |
412 |
470 |
471 | 添加要回复的帖子(每个百度ID次数:= $all ?>次)
472 |
473 | 不添加帖子/贴吧系统会直接跳过呦
474 |
475 |
476 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"); ?>
479 |
480 | fetch_array($bid)) {
482 | $cb = $m->fetch_array($m->query("SELECT SUM(`all`) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = {$x['id']}"));
483 | $have = $all - $cb['c']; ?>
484 | -
485 | = $x['name'] . '(' . $have . '次)' ?>
486 |
487 |
490 |
491 |
492 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
495 | while ($r = $m->fetch_array($bid)) {
496 | ?>
497 |
498 |
499 |
500 |
501 | ID |
502 | 时间 |
503 | 贴吧 |
504 | 帖子 |
505 | 每日(次) |
506 | 间隔(s) |
507 | 操作 |
508 |
509 |
510 |
511 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_tieba` WHERE `pid` = {$r['id']}");
514 | while ($r1 = $m->fetch_array($tt)) {
515 | $a++; ?>
516 |
517 | = $r1['id'] ?> |
518 | = $r1['rts'] . '-' . $r1['rte'] ?> |
519 | = $r1['tname'] ?>
521 | |
522 | = !empty($r1['pname']) ? '' . $r1['pname'] . '' : '随机回复' ?> |
523 | = $r1['all'] ?> |
524 | = $r1['space'] ?> |
525 |
526 | 编辑
528 | 删除
529 | |
530 |
531 |
533 |
534 |
535 |
541 |
580 |
581 |
582 |
583 |
585 |
586 |
587 |
593 |
594 |
600 |
605 |
606 |
607 |
608 |
609 | 暂无帖子 | | | | | | | | ';
613 | } ?>
614 |
615 |
616 |
617 |
620 |
621 |
622 |
623 | 添加帖子
624 | 添加贴吧
625 | 清空列表
626 |
627 | 添加回帖内容
628 |
629 | 回帖时随机使用其中之一,不添加的话会自动从句子迷获取灌水内容
630 |
631 |
632 |
633 |
634 | 序号 |
635 | 帖子ID |
636 | 内容 |
637 | 操作 |
638 |
639 |
640 |
641 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_post_content` WHERE `uid` = " . UID);
644 | while ($r2 = $m->fetch_array($cc)) {
645 | $a++; ?>
646 |
647 | = $r2['id'] ?> |
648 | = empty($r2['tid']) ? '全部' : $r2['tid'] ?> |
649 | = $r2['content'] ?> |
650 |
651 | 编辑
652 | 删除
653 | |
654 |
655 |
656 |
657 |
658 |
664 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
698 |
699 |
704 |
708 |
709 |
710 |
711 |
712 | 暂无内容 | | | | | | ';
716 | } ?>
717 |
718 |
719 |
720 | 添加内容
721 | 清空列表
722 |
723 |
724 |
726 |
727 |
728 |
729 |
730 |
736 |
737 |
800 |
801 |
805 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
819 |
820 |
868 |
872 |
873 |
874 |
875 |
876 |
877 |
878 |
879 |
880 |
881 |
887 |
888 |
893 |
897 |
898 |
899 |
900 |
901 |
902 |
903 |
904 |
905 |
906 |
912 |
936 |
937 |
938 |
939 |
940 |
941 |
942 |
943 |
949 |
950 |
955 |
959 |
960 |
961 |
962 |
--------------------------------------------------------------------------------
/ver4_rank/cron/dopost.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log`")); //获取ID最大值
9 | if ($id < $max['c']) {
10 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `id` > {$id} ORDER BY `id` ASC"));
11 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$b['pid']}'")); //获取bduss信息
12 | $td = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
13 | $ad = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));
14 | $rc = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `date` > {$td} AND `date` < {$ad} AND `id` ={$b['id']}"));
15 | if ($rc['c'] < 1) {
16 | $ck = (int)option::uget('ver4_rank_check', $b['uid']);
17 | if ($ck == 1) {
18 | $re = dorank($p['bduss'], $b['fid'], $b['nid']);
19 | $r = json_decode($re, true);
20 | switch ($r['no']) {
21 | case 0:
22 | $error = '助攻成功啦~明天记得继续呦~';
23 | break;
24 | case 3110004:
25 | $error = '你还未关注当前吧哦, 快去关注吧~';
26 | break;
27 | case 2280006:
28 | $error = '今日已助攻过了,或者度受抽风了~';
29 | break;
30 | default:
31 | $error = '助攻失败,发生了一些未知错误~';
32 | break;
33 | }
34 | $result .= '
'.date('Y-m-d').' #'.$r['no'].','.$error.$b['log'];
35 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` SET `log` = '{$result}',`date` = {$now} WHERE `id` = {$b['id']}");
36 | }
37 | }
38 | option::set('ver4_rank_id', $b['id']);
39 | } else {
40 | option::set('ver4_rank_id', 0);
41 | }
42 |
43 |
44 | //清理所有已经解除绑定用户设置的信息
45 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log`");
46 | while ($x = $m->fetch_array($q)) {
47 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
48 | if (empty($b['id'])) {
49 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `id` = {$x['id']}");
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/ver4_rank/ver4_rank.php:
--------------------------------------------------------------------------------
1 | 贴吧名人堂助攻';
12 | }
13 |
14 | addAction('navi_1', 'ver4_rank_nav');
15 | addAction('navi_7', 'ver4_rank_nav');
16 |
17 | function dorank($bduss, $fid, $nid)
18 | {
19 | $tbs = misc::getTbs(0, $bduss);
20 | $pz = new wcurl("http://tieba.baidu.com/celebrity/submit/support");
21 | $pz->addCookie(array('BDUSS' => $bduss));
22 | $data = array(
23 | 'tbs' => $tbs,
24 | 'forum_id' => $fid,
25 | 'npc_id' => $nid
26 | );
27 | $result = $pz->post($data);
28 | return $result;
29 | }
30 |
--------------------------------------------------------------------------------
/ver4_rank/ver4_rank_callback.php:
--------------------------------------------------------------------------------
1 | query("
12 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_rank_log` (
13 | `id` int(10) NOT NULL AUTO_INCREMENT,
14 | `uid` int(10) NOT NULL,
15 | `pid` int(10) NOT NULL,
16 | `fid` int(10) NOT NULL,
17 | `nid` varchar(15) NOT NULL,
18 | `name` varchar(255) NOT NULL,
19 | `tieba` varchar(255) NOT NULL,
20 | `log` text,
21 | `date` int(10) NOT NULL,
22 | PRIMARY KEY (`id`)
23 | ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4;
24 | ");
25 | }
26 |
27 | /**
28 | * 激活插件时会被调用
29 | */
30 | function callback_init()
31 | {
32 | option::set('ver4_rank_id', 0);
33 | cron::set('ver4_rank_dorank', 'plugins/ver4_rank/cron/dopost.php', 0, 0, 0);
34 | }
35 |
36 | /**
37 | * 禁用插件时会被调用
38 | */
39 | function callback_inactive()
40 | {
41 | option::del('ver4_rank_id');
42 | cron::del('ver4_rank_dorank');
43 | }
44 |
45 | /**
46 | * 卸载插件时会被调用
47 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
48 | */
49 | function callback_remove()
50 | {
51 | //在这里做点事
52 | global $m;
53 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_rank_log`");
54 | }
55 |
56 | /**
57 | * 升级插件时会被调用
58 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
59 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
60 | */
61 | function callback_update($ver1, $ver2)
62 | {
63 | //ver1 是当前数据库的版本号
64 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
65 | //在这里做点事
66 | return false; //我不干了!
67 | }
68 |
69 | /**
70 | * 插件自定义保存设置函数
71 | * 插件调用方法:setting.php?mod=setplugin:插件名称
72 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
73 | */
74 | function callback_setting()
75 | {
76 | //在这里做点事
77 | //dump($_rank); //看看前端给我rank了什么东西
78 | }
79 |
--------------------------------------------------------------------------------
/ver4_rank/ver4_rank_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4名人堂助攻', //插件名称,必填
8 | 'version' => '1.2', //插件版本号
9 | 'description' => 'Ver4签到联盟名人堂助攻', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => false, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => false, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => false, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_rank/ver4_rank_list.json:
--------------------------------------------------------------------------------
1 | [{"fid":"280050","nid":2257282262,"name":"最强王者","tieba":"lol"},{"fid":"11772","nid":1337628265,"name":"路飞","tieba":"海贼王"},{"fid":"8230522","nid":1337623685,"name":"贴吧用户_QRNVQaG","tieba":"风暴英雄"},{"fid":"10866131","nid":1866273558,"name":"月老嘉哥","tieba":"英三嘉哥"},{"fid":"81570","nid":2257269894,"name":"赛丽亚😇","tieba":"地下城与勇士"},{"fid":"401299","nid":1337623678,"name":"戒色守望者","tieba":"戒色"},{"fid":"711567","nid":1337628263,"name":"黄鱼哥","tieba":"内涵"},{"fid":"110019","nid":1337628266,"name":"漩涡鸣人","tieba":"火影忍者"},{"fid":"43927","nid":2257275375,"name":"剑侠客😇","tieba":"梦幻西游"},{"fid":"339","nid":2257275437,"name":"江户川柯南😇","tieba":"柯南"},{"fid":"1701120","nid":2257275573,"name":"陆逊😇","tieba":"三国杀"},{"fid":"30227","nid":1337623700,"name":"灰原哀","tieba":"灰原哀"},{"fid":"2862817","nid":1337623686,"name":"炉石旅店萌板娘","tieba":"炉石传说"},{"fid":"122873","nid":1337628268,"name":"黑崎一护","tieba":"死神"},{"fid":"738100","nid":1337623692,"name":"初音ミク","tieba":"初音ミク"},{"fid":"1627732","nid":2257275681,"name":"圣堂刺客😇","tieba":"dota2"},{"fid":"13839385","nid":2257269364,"name":"大喵😇","tieba":"奇迹暖暖"},{"fid":"1525417","nid":1337623679,"name":"张起灵","tieba":"盗墓笔记"},{"fid":"667580","nid":1337623697,"name":"坂田银时","tieba":"银魂"},{"fid":"1111175","nid":1337628284,"name":"贴吧用户_QRNVGb3","tieba":"黑丝"},{"fid":"574961","nid":1337628277,"name":"夏目贵志","tieba":"夏目友人帐"},{"fid":"2358322","nid":1337623698,"name":"遮天叶凡","tieba":"遮天"},{"fid":"11760190","nid":2257282271,"name":"宁海😇","tieba":"战舰少女"},{"fid":"5024455","nid":1337628281,"name":"暖暖","tieba":"暖暖环游世界"},{"fid":"1089593","nid":1337623683,"name":"荆天明","tieba":"秦时明月"},{"fid":"501133","nid":2257282249,"name":"SerB😇","tieba":"坦克世界"},{"fid":"1786526","nid":1337628286,"name":"高坂穗乃果","tieba":"lovelive"},{"fid":"47320","nid":1337623693,"name":"沢田纲吉","tieba":"家庭教师"},{"fid":"15975428","nid":1337623688,"name":"","tieba":"大话西游手游"},{"fid":"2432903","nid":2257269753,"name":"天空之城TC😇","tieba":"minecraft"},{"fid":"1498934","nid":1337628261,"name":"纳兹","tieba":"妖精的尾巴"},{"fid":"2941239","nid":2257269548,"name":"洛天依😇","tieba":"洛天依"},{"fid":"27829","nid":2257269560,"name":"桔梗😇","tieba":"桔梗"},{"fid":"16779","nid":1337623680,"name":"素还真","tieba":"霹雳"},{"fid":"1564063","nid":2257275856,"name":"御坂美琴","tieba":"御坂美琴"},{"fid":"551358","nid":2257275816,"name":"saber","tieba":"saber"},{"fid":"185228","nid":2257269662,"name":"龙马😇","tieba":"网球王子"},{"fid":"46797","nid":2257269533,"name":"工藤新一","tieba":"工藤新一"},{"fid":"21473","nid":1337628276,"name":"毛利兰","tieba":"毛利兰"},{"fid":"1299394","nid":1337623690,"name":"吴邪","tieba":"吴邪"},{"fid":"1319679","nid":2257275577,"name":"皮卡超人😇","tieba":"部落战争"},{"fid":"1321783","nid":2257275225,"name":"夏尔😇","tieba":"黑执事"},{"fid":"5437659","nid":1337623684,"name":"kiana","tieba":"崩坏学园2"},{"fid":"216681","nid":2257269425,"name":"古河渚😇","tieba":"clannad"},{"fid":"9714340","nid":1337628279,"name":"孟浩","tieba":"我欲封天"},{"fid":"78279","nid":1337623689,"name":"伏见猿比古","tieba":"k"},{"fid":"14823520","nid":2257269780,"name":"刀锋😇","tieba":"cf手游"},{"fid":"1866137","nid":2257269448,"name":"鹿目圆香😇","tieba":"魔法少女小圆"},{"fid":"2099286","nid":2257269826,"name":"夜刀神十香😇","tieba":"datealive"},{"fid":"1575589","nid":1337623701,"name":"东方爱","tieba":"浪漫传说"},{"fid":"154782","nid":2257282283,"name":"江户川哀😇","tieba":"柯哀"},{"fid":"4300","nid":2257282328,"name":"奇犽·揍敌客😇","tieba":"全职猎人"},{"fid":"10254689","nid":2257269311,"name":"绚濑绘里😇","tieba":"lovelive国服"},{"fid":"10631925","nid":2257275308,"name":"温文儒雅阳光😇","tieba":"炫舞时代"},{"fid":"4295466","nid":1337623694,"name":"柳鸣","tieba":"魔天记"},{"fid":"149985","nid":2257275387,"name":"日向雏田😇","tieba":"雏田"},{"fid":"957111","nid":2257275941,"name":"枫音","tieba":"中萌"},{"fid":"347203","nid":2257275921,"name":"工藤兰😇","tieba":"新兰"},{"fid":"644596","nid":2257275770,"name":"勒鲁什😇","tieba":"叛逆的勒鲁什"},{"fid":"701877","nid":2072780523,"name":"如果爱粉红帖😇","tieba":"如果爱"},{"fid":"420456","nid":2257275411,"name":"风铃😇","tieba":"世萌"},{"fid":"138887","nid":2257275510,"name":"不二周助","tieba":"不二周助"},{"fid":"711389","nid":2257269774,"name":"宇智波佐助😇","tieba":"佐助"},{"fid":"60129","nid":2257269964,"name":"怪盗基德😇","tieba":"怪盗基德"},{"fid":"128494","nid":2257269820,"name":"旗木卡卡西😇","tieba":"卡卡西"},{"fid":"1773771","nid":2257275519,"name":"时崎狂三😇","tieba":"时崎狂三"},{"fid":"2812935","nid":1337623681,"name":"金木研","tieba":"东京食尸鬼"},{"fid":"2297729","nid":2257275832,"name":"小奏😇","tieba":"立华奏"},{"fid":"493375","nid":2257269969,"name":"宇智波鼬","tieba":"宇智波鼬"},{"fid":"2757769","nid":2257275212,"name":"闪光亚丝娜😇","tieba":"亚丝娜"},{"fid":"2515521","nid":2257269875,"name":"利威尔阿克曼😇","tieba":"利威尔"},{"fid":"2966494","nid":2257275688,"name":"神兽萌萌😇","tieba":"炫舞2"},{"fid":"1550649","nid":2257269996,"name":"鲁鲁修😇","tieba":"鲁鲁修"},{"fid":"225307","nid":2257269677,"name":"越前龙马😇","tieba":"越前龙马"},{"fid":"13913","nid":2257269464,"name":"一露😇","tieba":"一露"},{"fid":"799600","nid":2257269684,"name":"春野樱😇","tieba":"春野樱"},{"fid":"1308858","nid":1337628275,"name":"盖聂","tieba":"盖聂"},{"fid":"4266803","nid":2257275502,"name":"次元酱😇","tieba":"二次元界"},{"fid":"2083514","nid":2257269862,"name":"秦时明月少司😇","tieba":"少司命"},{"fid":"2530050","nid":2257275916,"name":"黄濑凉太😇","tieba":"黄濑凉太"},{"fid":"1278749","nid":2257275638,"name":"C.C.😇","tieba":"c.c."},{"fid":"11768634","nid":1337623691,"name":"暴雨心奴","tieba":"罪雨台"},{"fid":"1446622","nid":2257275490,"name":"卫庄😇","tieba":"卫庄"},{"fid":"683722","nid":1337623696,"name":"雾岛董香","tieba":"雾岛董香"},{"fid":"1590884","nid":2257275344,"name":"张良","tieba":"秦时明月张良"},{"fid":"2485436","nid":2257269581,"name":"西木野真姬","tieba":"西木野真姬"},{"fid":"280289","nid":2257269626,"name":"娜美😇","tieba":"娜美"},{"fid":"361521","nid":2257275803,"name":"白凤😇","tieba":"白凤"},{"fid":"1310236","nid":2257269636,"name":"端木蓉😇","tieba":"端木蓉"},{"fid":"2827493","nid":2257269567,"name":"高渐离😇","tieba":"秦时明月all高"},{"fid":"2181095","nid":1337623682,"name":"戒撸吧小管家","tieba":"戒撸"}]
--------------------------------------------------------------------------------
/ver4_rank/ver4_rank_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT count(id) AS `c`FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
8 | if ($b['c'] < 1) {
9 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
10 | die;
11 | }
12 | if (isset($_GET['save'])) {
13 | $check = isset($_POST['c']) ? $_POST['c'] : '0';
14 | if (!empty($check)) {
15 | option::uset('ver4_rank_check', 1, $uid);
16 | } else {
17 | option::uset('ver4_rank_check', 0, $uid);
18 | }
19 | redirect('index.php?plugin=ver4_rank&success=' . urlencode('您的设置已成功保存'));
20 | }
21 | if (isset($_GET['duser'])) {
22 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
23 | if (!empty($id)) {
24 | global $m;
25 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `id` = '{$id}' AND `uid` = {$uid}");
26 | redirect('index.php?plugin=ver4_rank&success=' . urlencode('已成功删除该名人!'));
27 | } else {
28 | redirect('index.php?plugin=ver4_rank&error=' . urlencode('ID不合法'));
29 | }
30 | }
31 | if (isset($_GET['dauser'])) {
32 | global $m;
33 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `uid` = {$uid}");
34 | redirect('index.php?plugin=ver4_rank&success=' . urlencode('名人列表已成功清空!'));
35 | }
36 | if (isset($_GET['newuser'])) {
37 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
38 | $ck = isset($_POST['check']) ? sqladds($_POST['check']) : '';
39 |
40 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
41 | if ($p['uid'] != UID) {
42 | redirect('index.php?plugin=ver4_rank&error=' . urlencode('你不能替他人添加名人呦'));
43 | }
44 |
45 | if (!is_array($ck) || empty($ck)) {
46 | redirect('index.php?plugin=ver4_rank&error=' . urlencode('数据非法,或者你没有选择名人,提交失败'));
47 | }
48 | $list = json_decode(file_get_contents(PLUGIN_ROOT . '/ver4_rank/ver4_rank_list.json'), true);
49 | foreach ($ck as $v) {
50 | if (isset($list[$v])) {
51 | $ux = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `pid` = '{$pid}' AND `name` = '{$list[$v]['name']}'"));
52 | if (empty($ux['name'])) {
53 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` (`uid`,`pid`,`fid`,`nid`,`name`,`tieba`,`date`) VALUES ({$uid},'{$pid}','{$list[$v]['fid']}','{$list[$v]['nid']}','{$list[$v]['name']}','{$list[$v]['tieba']}',0)");
54 | }
55 | }
56 | }
57 | redirect('index.php?plugin=ver4_rank&success=' . urlencode('名人已成功添加!'));
58 | }
59 |
60 | ?>
61 | 贴吧名人堂助攻
62 |
63 | ' . htmlspecialchars($_GET['success']) . '';
66 | }
67 | if (isset($_GET['error'])) {
68 | echo '' . htmlspecialchars($_GET['error']) . '
';
69 | }
70 | ?>
71 | 基本设置
72 |
73 |
97 |
98 | 助攻日志
99 |
100 |
101 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
104 | ?>
105 |
106 | fetch_array($bid)) {
108 | ?>
109 | - = $x['name'] ?>
111 |
112 |
116 |
117 |
118 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
121 | while ($r = $m->fetch_array($bid)) {
122 | ?>
123 |
124 |
125 |
126 |
127 | 序号 |
128 | 贴吧 |
129 | 名人 |
130 | 时间 |
131 | 日志 |
132 | 操作 |
133 |
134 |
135 |
136 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_rank_log` WHERE `pid` = {$r['id']} ORDER BY `id` DESC");
139 | while ($x = $m->fetch_array($lr)) {
140 | $a++;
141 | $date = date('Y-m-d H:i:s', $x['date']); ?>
142 |
143 | = $x['id'] ?> |
144 | = $x['tieba'] ?> |
146 | = $x['name'] ?> |
147 | = $date ?> |
148 |
149 | 查看
151 | |
152 |
153 | 删除
155 | |
156 |
157 |
159 |
160 |
161 |
167 |
168 |
169 | = empty($x['log']) ? '暂无日志' : $x['log'] ?>
170 |
171 |
172 |
175 |
176 |
177 |
178 |
180 |
181 |
182 |
188 |
189 |
195 |
199 |
200 |
201 |
202 |
203 | 暂无助攻记录 | | | | | | ";
207 | } ?>
208 |
209 |
210 |
211 |
215 |
216 |
217 | 添加名人
218 | 清空列表
219 | 贴吧名人堂
220 |
221 |
222 |
223 |
224 |
225 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
306 |
307 |
308 |
--------------------------------------------------------------------------------
/ver4_ref/cron/ref.php:
--------------------------------------------------------------------------------
1 | 90) && (date('H') > 18)) {
9 | $id = option::get('ver4_ref_id');
10 | $b = $m->fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid`"));
11 | if ($id < $b['c']) {
12 | $bi = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` > {$id}"));
13 | $x = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "tieba` WHERE `pid` = {$bi['id']}"));
14 | if ($x['c'] <= 1000) {
15 | misc::scanTiebaByPid($bi['id']);
16 | }
17 | option::set('ver4_ref_id', $bi['id']);
18 | option::set('ver4_ref_lastdo', time());
19 | } else {
20 | option::set('ver4_ref_id', 0);
21 | option::set('ver4_ref_day', date('d'));
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ver4_ref/ver4_ref.php:
--------------------------------------------------------------------------------
1 | 刷新列表';
12 | }
13 |
14 | addAction('navi_2', 'ref_nav');
15 | addAction('navi_8', 'ref_nav');
16 |
--------------------------------------------------------------------------------
/ver4_ref/ver4_ref_callback.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4自动刷新贴吧列表', //插件名称,必填
8 | 'version' => '1.0', //插件版本号
9 | 'description' => 'Ver4签到联盟贴吧列表自动刷新', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => false, //bool 插件是否有设置页面,必填
23 | 'show' => false, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => false, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => false, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_ref/ver4_ref_setting.php:
--------------------------------------------------------------------------------
1 | '.htmlspecialchars($_GET['msg']).'';
7 | }
8 | if (isset($_GET['id'])) {
9 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : 0;
10 | $r = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$id}'"));
11 | if (!empty($r['bduss'])) {
12 | misc::scanTiebaByPid($id);
13 | redirect('index.php?mod=admin:setplug&plug=ver4_ref&msg='.urlencode('已成功刷新该用户贴吧列表!'));
14 | } else {
15 | redirect('index.php?mod=admin:setplug&plug=ver4_ref&msg='.urlencode('非法操作!'));
16 | }
17 | }
18 | ?>
19 | 手动刷新贴吧列表
20 |
21 |
22 |
23 |
24 |
25 | ID |
26 | 百度ID |
27 | 贴吧数 |
28 | 操作 |
29 |
30 |
31 |
32 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid`");
35 | while ($x = $m->fetch_array($wr)) {
36 | ?>
37 |
38 | = $x['id'] ?> |
39 | = $x['name'] ?> |
40 |
41 | fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "tieba` WHERE `pid` = {$x['id']}"));
43 | echo $wt['c']; ?>
44 | |
45 | 刷新 |
46 |
47 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/ver4_review/cron/dopost.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list`")); //获取ID最大值
8 | if ($id < $max['c']) {
9 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `id` > {$id} ORDER BY `id` ASC"));
10 | $open = (int)option::uget('ver4_review_crv', $b['uid']);
11 | if (!empty($open)) {
12 | $jg = time() - $b['date'];
13 | if ($jg > $b['space']) {
14 | $u = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$b['pid']}"));
15 | if (!empty($u['id'])) {
16 | dopost($b['tname'], $b['kw'], $u['bduss']);
17 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` SET `date` = {$now} WHERE `id` = {$b['id']}");
18 | }
19 | }
20 | }
21 | option::set('ver4_review_id', $b['id']);
22 | } else {
23 | option::set('ver4_review_id', 0);
24 | }
25 |
26 |
27 | //清理所有已经解除绑定用户设置的信息
28 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list`");
29 | while ($x = $m->fetch_array($q)) {
30 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
31 | if (empty($b['id'])) {
32 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `id` = {$x['id']}");
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ver4_review/ver4_review.php:
--------------------------------------------------------------------------------
1 | 贴吧云审查[吧务]';
12 | }
13 |
14 | addAction('navi_1', 'ver4_review_nav');
15 | addAction('navi_7', 'ver4_review_nav');
16 |
17 | function dopost($tieba, $kw, $bduss)
18 | {
19 | $a = 0;
20 | $tid = '';
21 | $kw = json_decode($kw, true);
22 | $tinfo = scanTieba($tieba);
23 | $fid = $tinfo['forum']['id'];
24 | if (!empty($fid)) {
25 | foreach ($tinfo['thread_list'] as $tv) {
26 | $c_title = 0;
27 | $c_content = 0;
28 | foreach ($kw as $v) {
29 | if (empty($c_title)) {
30 | $c_title = is_numeric(strpos($tv['title'], $v));
31 | }
32 | foreach ($tv['abstract'] as $ttc) {
33 | if (empty($c_content)) {
34 | $c_content = is_numeric(strpos($ttc['text'], $v));
35 | }
36 | }
37 | }
38 | if (!empty($c_title) || !empty($c_content)) {
39 | if (empty($a)) {
40 | $tid = $tv['id'];
41 | } else {
42 | $tid .= '_'.$tv['id'];
43 | }
44 | $a ++;
45 | }
46 | }
47 | if (!empty($a)) {
48 | delPost($bduss, $tieba, $fid, $tid);
49 | }
50 | }
51 | }
52 |
53 | function scanTieba($kw)
54 | {
55 | $tl = new wcurl('http://c.tieba.baidu.com/c/f/frs/page');
56 | $data = array(
57 | '_client_id' => 'wappc_1470896832265_330',
58 | '_client_type' => 2,
59 | '_client_version' => '5.1.3',
60 | '_phone_imei' => '867600020777420',
61 | 'from' => 'baidu_appstore',
62 | 'kw' => $kw,
63 | 'model' => 'HUAWEI MT7-TL10',
64 | 'pn' => 1,
65 | 'rn' => 35,
66 | 'st_type' => 'tb_forumlist',
67 | 'timestamp' => time() . '525'
68 | );
69 | $sign_str = '';
70 | foreach ($data as $k => $v) {
71 | $sign_str .= $k . '=' . $v;
72 | }
73 | $sign = strtoupper(md5($sign_str . 'tiebaclient!!!'));
74 | $data['sign'] = $sign;
75 | $tl->set(CURLOPT_RETURNTRANSFER, true);
76 | $rt = $tl->post($data);
77 | $result = json_decode($rt, true);
78 | return $result;
79 | }
80 |
81 | function delPost($bduss, $kw, $fid, $tid)
82 | {
83 | $t = new wcurl('http://tieba.baidu.com/f/commit/thread/batchDelete');
84 | $data = 'ie=utf-8&tbs=' . misc::getTbs(0, $bduss) . "&kw={$kw}&fid={$fid}&tid={$tid}&isBan=0";
85 | $t->addCookie(array('BDUSS' => $bduss));
86 | $t->post($data);
87 | }
88 |
--------------------------------------------------------------------------------
/ver4_review/ver4_review_callback.php:
--------------------------------------------------------------------------------
1 | query("
11 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_review_list` (
12 | `id` int(10) NOT NULL AUTO_INCREMENT,
13 | `uid` int(10) NOT NULL,
14 | `pid` int(10) NOT NULL,
15 | `tname` varchar(255) NOT NULL,
16 | `kw` text,
17 | `space` int(10) NOT NULL DEFAULT '1800',
18 | `date` int(10) NOT NULL DEFAULT '0',
19 | PRIMARY KEY (`id`)
20 | ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
21 | ");
22 | }
23 |
24 | /**
25 | * 激活插件时会被调用
26 | */
27 | function callback_init()
28 | {
29 | option::set('ver4_review_id', 0);
30 | option::set('ver4_review_limit', 10);
31 | option::set('ver4_review_time', 1800);
32 | cron::set('ver4_review_dopost', 'plugins/ver4_review/cron/dopost.php', 0, 0, 0);
33 | }
34 |
35 | /**
36 | * 禁用插件时会被调用
37 | */
38 | function callback_inactive()
39 | {
40 | option::del('ver4_review_id');
41 | option::del('ver4_review_limit');
42 | option::del('ver4_review_time');
43 | cron::del('ver4_review_dopost');
44 | }
45 |
46 | /**
47 | * 卸载插件时会被调用
48 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
49 | */
50 | function callback_remove()
51 | {
52 | //在这里做点事
53 | global $m;
54 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_review_list`");
55 | }
56 |
57 | /**
58 | * 升级插件时会被调用
59 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
60 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
61 | */
62 | function callback_update($ver1, $ver2)
63 | {
64 | //ver1 是当前数据库的版本号
65 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
66 | //在这里做点事
67 | return false; //我不干了!
68 | }
69 |
70 | /**
71 | * 插件自定义保存设置函数
72 | * 插件调用方法:setting.php?mod=setplugin:插件名称
73 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
74 | */
75 | function callback_setting()
76 | {
77 | //在这里做点事
78 | //dump($_POST); //看看前端给我POST了什么东西
79 | }
80 |
--------------------------------------------------------------------------------
/ver4_review/ver4_review_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4云审查', //插件名称,必填
8 | 'version' => '1.5', //插件版本号
9 | 'description' => 'Ver4签到联盟贴吧云审查,提供高性能的贴吧吧务管理服务', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => true, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => true, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => true, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_review/ver4_review_setting.php:
--------------------------------------------------------------------------------
1 |
4 | 云审查设置
5 |
6 | '.htmlspecialchars($_GET['msg']).'';
9 | }
10 | if (isset($_GET['save'])) {
11 | option::set('ver4_review_limit', $_POST['limit']);
12 | option::set('ver4_review_time', $_POST['time']);
13 | redirect('index.php?mod=admin:setplug&plug=ver4_review&msg='.urlencode('设置已保存成功!'));
14 | }
15 | ?>
16 |
17 |
--------------------------------------------------------------------------------
/ver4_review/ver4_review_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT count(id) AS `c`FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
8 | if ($b['c'] < 1) {
9 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
10 | die;
11 | }
12 | if (isset($_GET['save'])) {
13 | $crv = isset($_POST['c_rv']) ? $_POST['c_rv'] : '0';
14 | if (!empty($crv)) {
15 | option::uset('ver4_review_crv', 1, $uid);
16 | } else {
17 | option::uset('ver4_review_crv', 0, $uid);
18 | }
19 | redirect('index.php?plugin=ver4_review&success=' . urlencode('您的设置已成功保存'));
20 | }
21 | ?>
22 | 贴吧云审查
23 |
24 | ' . htmlspecialchars($_GET['success']) . '';
27 | }
28 | if (isset($_GET['error'])) {
29 | echo '' . htmlspecialchars($_GET['error']) . '
';
30 | }
31 |
32 | if (isset($_GET['dtieba'])) {
33 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
34 | if (!empty($id)) {
35 | global $m;
36 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `id` = '{$id}' AND `uid` = {$uid}");
37 | redirect('index.php?plugin=ver4_review&success=' . urlencode('已成功删除该贴吧,系统将不再扫描此吧!'));
38 | } else {
39 | redirect('index.php?plugin=ver4_review&error=' . urlencode('ID不合法'));
40 | }
41 | }
42 |
43 | if (isset($_GET['datieba'])) {
44 | global $m;
45 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `uid` = {$uid}");
46 | redirect('index.php?plugin=ver4_review&success=' . urlencode('云审查列表已成功清空!'));
47 | }
48 | if (isset($_GET['newtieba'])) {
49 | $pid = isset($_POST['pid']) ? sqladds($_POST['pid']) : '';
50 | $kw = isset($_POST['kw']) ? sqladds($_POST['kw']) : '';
51 | $tieba = isset($_POST['tieba']) ? sqladds($_POST['tieba']) : '';
52 | $space = isset($_POST['space']) && is_numeric($_POST['space']) ? sqladds($_POST['space']) : option::get('ver4_review_time');
53 |
54 | $rc = explode("\n", $kw);
55 | foreach ($rc as $k => $v) {
56 | $v = str_replace("\n", '', $v);
57 | $v = str_replace("\r", '', $v);
58 | if (empty($v)) {
59 | unset($rc[$k]);
60 | }
61 | }
62 | $rc = array_values($rc);
63 |
64 | if (empty($pid) || count($rc) < 1 || empty($tieba) || empty($space)) {
65 | redirect('index.php?plugin=ver4_review&error=' . urlencode('信息不完整,添加失败!'));
66 | }
67 |
68 | $time = option::get('ver4_review_time');
69 | if ($space < $time || $space > 86400) {
70 | redirect('index.php?plugin=ver4_review&error=' . urlencode('间隔设置不正确!'));
71 | }
72 |
73 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = '{$pid}'"));
74 | if ($p['uid'] != UID) {
75 | redirect('index.php?plugin=ver4_review&error=' . urlencode('你不能替他人添加需要扫描的贴吧'));
76 | }
77 |
78 | $limit = option::get('ver4_review_limit');
79 | $t = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `pid` = '{$pid}'"));
80 | if ($t['c'] >= $limit) {
81 | redirect('index.php?plugin=ver4_review&error=' . urlencode('啊哦,您只能添加' . $limit . '个扫描吧哦!'));
82 | }
83 |
84 | $kw = json_encode($rc, JSON_UNESCAPED_UNICODE);
85 | $kw = str_replace('\r', '', $kw);
86 |
87 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` (`uid`,`pid`,`tname`,`kw`,`space`) VALUES ({$uid},'{$pid}','{$tieba}','{$kw}','{$space}')");
88 | redirect('index.php?plugin=ver4_review&success=' . urlencode('该贴吧已加入扫描列表,请耐心等待系统扫描吧~~哇咔咔'));
89 | }
90 | if (isset($_GET['ctieba'])) {
91 | $id = isset($_GET['id']) ? sqladds($_GET['id']) : '';
92 | $kw = isset($_POST['kw']) ? sqladds($_POST['kw']) : '';
93 | $space = isset($_POST['space']) && is_numeric($_POST['space']) ? sqladds($_POST['space']) : option::get('ver4_review_time');
94 |
95 | $rc = explode("\n", $kw);
96 | foreach ($rc as $k => $v) {
97 | $v = str_replace("\n", '', $v);
98 | $v = str_replace("\r", '', $v);
99 | if (empty($v)) {
100 | unset($rc[$k]);
101 | }
102 | }
103 | $rc = array_values($rc);
104 | $time = option::get('ver4_review_time');
105 |
106 | if (!is_array($rc) || empty($space)) {
107 | redirect('index.php?plugin=ver4_review&error=' . urlencode('信息不完整,添加失败!'));
108 | }
109 | if ($space < $time || $space > 86400) {
110 | redirect('index.php?plugin=ver4_review&error=' . urlencode('间隔设置不正确!'));
111 | }
112 | $p = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `id` = '{$id}'"));
113 | if ($p['uid'] != UID) {
114 | redirect('index.php?plugin=ver4_review&error=' . urlencode('你不能修改他人的贴吧设置'));
115 | }
116 |
117 |
118 | $kw = json_encode($rc, JSON_UNESCAPED_UNICODE);
119 | $kw = str_replace('\r', '', $kw);
120 |
121 | $m->query("UPDATE `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` SET `space` = '{$space}',`kw` = '{$kw}' WHERE `id` = '{$id}'");
122 | redirect('index.php?plugin=ver4_review&success=' . urlencode('设置已成功修改~~哇咔咔'));
123 | }
124 | ?>
125 | 基本设置
126 |
127 |
151 |
152 | 贴吧扫描日志
153 |
154 |
155 |
156 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
159 | ?>
160 |
161 | fetch_array($bid)) {
163 | ?>
164 | - = $x['name'] ?>
166 |
167 |
171 |
172 |
173 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
176 | while ($r = $m->fetch_array($bid)) {
177 | ?>
178 |
179 |
180 |
181 |
182 | 序号 |
183 | 贴吧名称 |
184 | 间隔(秒) |
185 | 上次执行 |
186 | 可选操作 |
187 |
188 |
189 |
190 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_review_list` WHERE `pid` = {$r['id']}");
193 | while ($r1 = $m->fetch_array($uu)) {
194 | $a++;
195 | $b = 0;
196 | $con = '';
197 | $rk = json_decode($r1['kw'], true);
198 | foreach ($rk as $v) {
199 | if (!empty($v)) {
200 | if (empty($b)) {
201 | $con .= $v;
202 | } else {
203 | $con .= "\n" . $v;
204 | }
205 | $b ++;
206 | }
207 | } ?>
208 |
209 | = $r1['id'] ?> |
210 | = $r1['tname'] ?> |
212 | = $r1['space'] ?> |
213 | = date('Y-m-d H:i:s', $r1['date']) ?> |
214 |
215 | 编辑
216 | 删除
218 | |
219 |
220 |
222 |
223 |
224 |
230 |
249 |
250 |
251 |
252 |
253 |
255 |
256 |
257 |
263 |
264 |
270 |
274 |
275 |
276 |
277 |
278 | 暂无需要扫描的贴吧 | | | | | | | | ';
282 | } ?>
283 |
284 |
285 |
286 |
290 |
291 |
292 |
293 | 添加贴吧
294 | 清空列表
295 |
296 |
297 |
298 |
299 |
305 |
306 |
311 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
328 |
356 |
360 |
361 |
362 |
363 |
--------------------------------------------------------------------------------
/ver4_style/css/ui.css:
--------------------------------------------------------------------------------
1 | /*! Amaze UI v2.6.2 | by Amaze UI Team | (c) 2016 AllMobilize, Inc. | Licensed under MIT | 2016-04-22T15:38:46+0800 */
2 | body{
3 | background: white;
4 | }
5 | .navbar{
6 | border-radius: 0px;
7 | border-width: 0 0 1px;
8 | position: fixed;
9 | z-index: 9999;
10 | width: 100%;
11 | }
12 | .navbar-default{
13 | background-color: #0e90d2;
14 | }
15 | .navbar-default .navbar-collapse, .navbar-default .navbar-form {
16 | border-color: #0E90D2;
17 | border-width: 0;
18 | }
19 |
20 | .row{
21 | margin-top: 80px;
22 | }
23 |
24 | .modal-content {
25 | margin-top: 80px;
26 | }
27 |
28 | .navbar-default .navbar-brand{ color: white; }
29 | .navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover { color : white; background-color : transparent }
30 | .navbar-default .navbar-nav > li > a { color : white }
31 | .navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover { color : white; background-color : transparent }
32 | .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:focus, .navbar-default .navbar-nav > .open > a:hover { color : #fff; background-color : transparent }
33 |
34 | .navbar-toggle{
35 | background-color: white;
36 | }
37 |
38 | .alert-success { background-color : #5eb95e; border-color : #4bad4b; color : #fff }
39 |
40 | .alert-success hr { border-top-color : #c9e2b3 }
41 |
42 | .alert-success .alert-link { color : #2b542c }
43 |
44 | .alert-info { background-color : #eee; border-color : #dfdfdf; color : #555 }
45 |
46 | .alert-info hr { border-top-color : #a6e1ec }
47 |
48 | .alert-info .alert-link { color : #245269 }
49 |
50 | .alert-warning { background-color : #F37B1D; border-color : #e56c0c; color : #fff }
51 |
52 | .alert-warning hr { border-top-color : #f7e1b5 }
53 |
54 | .alert-warning .alert-link { color : #66512c }
55 |
56 | .alert-danger { background-color : #dd514c; border-color : #d83832; color : #fff }
57 |
58 | .alert-danger hr { border-top-color : #e4b9c0 }
59 |
60 | .alert-danger .alert-link { color : #843534 }
61 |
62 | .btn-primary { color : #fff; background-color : #0e90d2; border-color : #0e90d2 }
63 |
64 | .btn-primary.active, .btn-primary.focus, .btn-primary:active, .btn-primary:focus, .btn-primary:hover, .open > .dropdown-toggle.btn-primary {color : #fff; border-color : #0a6999 }
65 |
66 | .btn-primary.active, .btn-primary:active, .open > .dropdown-toggle.btn-primary { background-image : none }
67 |
68 | .btn-primary.disabled, .btn-primary.disabled.active, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled:focus, .btn-primary.disabled:hover, .btn-primary[disabled], .btn-primary[disabled].active, .btn-primary[disabled].focus, .btn-primary[disabled]:active, .btn-primary[disabled]:focus, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary.active, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:hover { background-color : #0e90d2; border-color : #0e90d2 }
69 |
70 | .panel-primary {
71 | border-color: #ddd;
72 | }
73 | .panel-primary > .panel-heading { color : #444; background-color : #f5f5f5; border-color : #ddd }
74 |
75 | .panel-warning {
76 | border-color: #ddd;
77 | }
78 | .panel-warning > .panel-heading { color : #444; background-color : #f5f5f5; border-color : #ddd}
79 |
80 | .panel-danger{
81 | border-color: #ddd;
82 | }
83 | .panel-danger > .panel-heading { color : #444; background-color : #f5f5f5; border-color : #ddd }
84 |
85 | .panel-success{
86 | border-color: #ddd;
87 | }
88 | .panel-success > .panel-heading { color : #444; background-color : #f5f5f5; border-color : #ddd }
89 |
90 | .nav-tabs { border-bottom : 1px solid #ddd }
91 |
92 | .nav-tabs > li { float : left; margin-bottom : -1px }
93 |
94 | .nav-tabs > li > a { margin-right : 2px; line-height : 1.42857143; border : 1px solid transparent; border-radius : 0px 0px 0 0 }
95 |
96 | .nav-tabs > li > a:hover { border-color : #eee #eee #ddd }
97 |
98 | .nav-tabs > li.active > a, .nav-tabs > li.active > a:focus, .nav-tabs > li.active > a:hover { color : #555; cursor : default; background-color : #fff; border : 1px solid #ddd; border-bottom-color : transparent }
99 |
100 |
101 |
102 | @media (max-width : 767px) {
103 | .navbar-default .navbar-nav .open .dropdown-menu > li > a { color : white }
104 |
105 | .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover { color : white; background-color : orange }
106 | }
107 |
108 | @media (max-width: 1199px) and (min-width: 992px){
109 | .visible-md {
110 | display: none!important;
111 | }
112 | }
113 | @media (min-width: 1200px){
114 | .visible-lg {
115 | display: none!important;
116 | }
117 | }
118 | @media (min-width: 992px){
119 | .col-md-9 {
120 | width: 100%;
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ver4_style/ver4_style.php:
--------------------------------------------------------------------------------
1 | ';
20 | }
21 |
22 | addAction('header', 'ver4_style_ui');
23 |
--------------------------------------------------------------------------------
/ver4_zdwk/cron/dopost.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT max(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE {$sql}")); //获取ID最大值
10 | if ($id < $max['c']) {
11 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` > {$id} AND {$sql} ORDER BY `id` ASC"));
12 | $td = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
13 | $ad = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));
14 | $rc = $m->fetch_array($m->query("SELECT count(id) AS `c` FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log` WHERE `date` > {$td} AND `date` < {$ad} AND `pid` ={$b['id']}"));
15 | if ($rc['c'] < 1) {
16 | zdsign($b['bduss']);
17 | $m->query("INSERT INTO `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log` (`uid`,`pid`,`result`,`date`) VALUES ({$b['uid']},{$b['id']},'签到完成 ',{$now})");
18 | }
19 | option::set('ver4_zdwk_pid', $b['id']);
20 | } else {
21 | option::set('ver4_zdwk_pid', 0);
22 | }
23 |
24 |
25 | //清理所有已经解除绑定用户设置的信息
26 | $q = $m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log`");
27 | while ($x = $m->fetch_array($q)) {
28 | $b = $m->fetch_array($m->query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `id` = {$x['pid']}"));
29 | if (empty($b['id'])) {
30 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log` WHERE `id` = {$x['id']}");
31 | }
32 | }
33 |
34 | /*
35 | * 删除30天之前的历史记录
36 | * */
37 | $d = option::get('ver4_zdwk_day');
38 | if ($d != date('d')) {
39 | global $m;
40 | $thirty = time() - 2592000;
41 | $m->query("DELETE FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log` WHERE `date` <= {$thirty}");
42 | }
43 | option::set('ver4_zdwk_day', date('d'));
44 |
--------------------------------------------------------------------------------
/ver4_zdwk/ver4_zdwk.php:
--------------------------------------------------------------------------------
1 | 百度知道签到';
12 | }
13 |
14 | addAction('navi_1', 'ver4_zdwk_nav');
15 | addAction('navi_7', 'ver4_zdwk_nav');
16 |
17 | /*function zdsign($bduss)
18 | {
19 | $c = new wcurl('https://zhidao.baidu.com/msubmit/signin');
20 | $c->addCookie(array('BDUSS' => $bduss));
21 | $c->get();
22 | }*/
23 | function zdsign($bduss){
24 | $boxType = [128 => "CopperChest",129 => "SilverChest",130 => "GoldChest",131 => "DiamondChest"];//宝箱类型
25 | $signinfo = json_decode((new wcurl('https://zhidao.baidu.com/mmisc/ajaxsigninfo'))->addCookie('BDUSS=' . $bduss)->get(), true);
26 | if ($signinfo) {
27 | $c = (new wcurl('https://zhidao.baidu.com/msubmit/signin', ['referer: https://zhidao.baidu.com/mmisc/signinfo', 'X-ik-ssl: 1', "X-ik-token: {$signinfo["user"]["stoken"]}"]))->addCookie('BDUSS=' . $bduss)->post(array("ssid" => null, "cifr" => null));//签到
28 | if($signinfo["data"]["signBoxId"]){
29 | $c = (new wcurl("https://zhidao.baidu.com/shop/submit/chest?type={$boxType[$signinfo["data"]["signBoxId"]]}", ["referer: https://zhidao.baidu.com/mmisc/signinfo", "X-ik-ssl: 1", "X-ik-token: {$signinfo["user"]["stoken"]}"]))->addCookie('BDUSS=' . $bduss)->post(array("itemId" => $signinfo["data"]["signBoxId"], "stoken" => $signinfo["user"]["stoken"]));//开宝箱
30 | }
31 | }
32 | }
33 |
34 | /*function wksign($bduss){
35 | $head = array();
36 | $head[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';
37 | $head[] = 'Referer: http://wenku.baidu.com/task/browse/daily';
38 | $c = new wcurl('http://wenku.baidu.com/task/submit/signin',$head);
39 | $c->addCookie('BDUSS=' . $bduss);
40 | $c->get();
41 | }*/
42 |
--------------------------------------------------------------------------------
/ver4_zdwk/ver4_zdwk_callback.php:
--------------------------------------------------------------------------------
1 | query("
11 | CREATE TABLE IF NOT EXISTS `".DB_PREFIX."ver4_zdwk_log` (
12 | `id` int(10) NOT NULL AUTO_INCREMENT,
13 | `uid` int(10) NOT NULL,
14 | `pid` int(10) NOT NULL,
15 | `result` varchar(255) NOT NULL,
16 | `date` int(10) NOT NULL DEFAULT '0',
17 | PRIMARY KEY (`id`)
18 | ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
19 | ");
20 | }
21 |
22 | /**
23 | * 激活插件时会被调用
24 | */
25 | function callback_init()
26 | {
27 | option::set('ver4_zdwk_pid', 0);
28 | option::set('ver4_zdwk_day', 0);
29 | cron::set('ver4_zdwk_dopost', 'plugins/ver4_zdwk/cron/dopost.php', 0, 0, 0);
30 | }
31 |
32 | /**
33 | * 禁用插件时会被调用
34 | */
35 | function callback_inactive()
36 | {
37 | option::del('ver4_zdwk_pid');
38 | option::del('ver4_zdwk_day');
39 | cron::del('ver4_zdwk_dopost');
40 | }
41 |
42 | /**
43 | * 卸载插件时会被调用
44 | * 卸载插件前,如果插件是激活的,会自动禁用并调用 callback_inactive()
45 | */
46 | function callback_remove()
47 | {
48 | //在这里做点事
49 | global $m;
50 | $m->query("DROP TABLE IF EXISTS `".DB_PREFIX."ver4_zdwk_log`");
51 | }
52 |
53 | /**
54 | * 升级插件时会被调用
55 | * 系统会传入当前数据库的版本号、当前插件文件中说明的版本号
56 | * 必须有返回值,如果返回新的版本号,新版本号由系统记录到数据库;如果返回false,将终止操作且不记录到数据库
57 | */
58 | function callback_update($ver1, $ver2)
59 | {
60 | //ver1 是当前数据库的版本号
61 | //ver2 是当前插件文件中说明的版本号,即 插件名_desc.php 的 ['plugin']['version'] 的值
62 | //在这里做点事
63 | return false; //我不干了!
64 | }
65 |
66 | /**
67 | * 插件自定义保存设置函数
68 | * 插件调用方法:setting.php?mod=setplugin:插件名称
69 | * 然后系统会调用 插件名_callback.php 的 callback_setting()
70 | */
71 | function callback_setting()
72 | {
73 | //在这里做点事
74 | //dump($_POST); //看看前端给我POST了什么东西
75 | }
76 |
--------------------------------------------------------------------------------
/ver4_zdwk/ver4_zdwk_desc.php:
--------------------------------------------------------------------------------
1 | array(
7 | 'name' => 'Ver4知道签到', //插件名称,必填
8 | 'version' => '1.0', //插件版本号
9 | 'description' => 'Ver4签到联盟,提供高性能的贴吧云服务', //插件描述
10 | 'onsale' => false, //bool 插件是否已在产品中心上架
11 | 'url' => 'https://www.tbsign.cn/', //插件地址,比如哪里可以下载到这个插件
12 | 'for' => 'all', //适用的云签到版本,all为所有版本,版本后面跟+表示适用于该版本或更高版本,如V4.0+
13 | 'forphp' => 'all' //适用的PHP版本,如果定义了,系统就在安装和激活时进行版本对比,如果版本低于forphp,自动禁止下一步操作,all为所有版本
14 | ),
15 | 'author' => array(
16 | 'author' => 'Ver4', //作者名称
17 | 'email' => 'i@v4.hk', //作者邮箱
18 | 'url' => 'https://www.tbsign.cn/' //作者的个人网站
19 | ),
20 | 'view' => array(
21 | //以下设置均只影响插件列表页面是否有对应按钮
22 | 'setting' => false, //bool 插件是否有设置页面,必填
23 | 'show' => true, //bool 插件是否有展示页面,必填
24 | 'vip' => false, //bool 插件是否有只给VIP看的页面,必填
25 | 'private' => false, //bool 插件是否有只给管理员看的页面,必填
26 | 'public' => false, //bool 插件是否有给任何人(包括未登录的)看的页面,必填
27 | 'update' => false, //bool 插件如果有新版本,是否在插件列表页面显示升级按钮
28 | ),
29 | 'page' => array(
30 | //规定插件有哪些自定义页面,不需要自定义页面可留空
31 | //自定义页面访问方式:index.php?mod=view:插件名:自定义页面名
32 | //程序将自动在插件目录下寻找并加载 view_自定义页面名.php
33 | //任何人都能查看自定义页面,包括未登录的用户,因此你必须自己写好权限控制
34 | //'phpinfo' //定义一个名为phpinfo的自定义页面,位于/plugins/wmzz_debug/view_phpinfo.php
35 | )
36 | );
37 |
--------------------------------------------------------------------------------
/ver4_zdwk/ver4_zdwk_show.php:
--------------------------------------------------------------------------------
1 | fetch_array($m->query("SELECT count(id) AS `c`FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"));
8 | if ($b['c'] < 1) {
9 | echo '您需要先绑定至少一个百度ID才可以使用本功能
';
10 | die;
11 | }
12 | if (isset($_GET['save'])) {
13 | $czd = isset($_POST['c_zd']) ? $_POST['c_zd'] : '0';
14 | if (!empty($czd)) {
15 | option::uset('ver4_zdwk_czd', 1, $uid);
16 | } else {
17 | option::uset('ver4_zdwk_czd', 0, $uid);
18 | }
19 | redirect('index.php?plugin=ver4_zdwk&success=' . urlencode('您的设置已成功保存'));
20 | }
21 | ?>
22 | 知道签到
23 |
24 | ' . htmlspecialchars($_GET['success']) . '';
27 | }
28 | if (isset($_GET['error'])) {
29 | echo '' . htmlspecialchars($_GET['error']) . '
';
30 | }
31 | ?>
32 | 基本设置
33 |
34 |
58 |
59 | 签到日志
60 |
61 |
62 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
65 | ?>
66 |
67 | fetch_array($bid)) {
69 | ?>
70 | -
73 |
74 |
78 |
79 |
80 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}");
83 | while ($r = $m->fetch_array($bid)) {
84 | ?>
85 |
87 |
88 |
89 |
90 | 序号 |
91 | 结果 |
92 | 时间 |
93 |
94 |
95 |
96 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "ver4_zdwk_log` WHERE `pid` = {$r['id']} ORDER BY `id` DESC");
99 | while ($x = $m->fetch_array($lr)) {
100 | $a++;
101 | $date = date('Y-m-d H:i:s', $x['date']);
102 | echo "{$x['id']} | {$x['result']} | {$date} |
";
103 | }
104 | if (empty($a)) {
105 | echo "暂无签到记录 | | |
";
106 | } ?>
107 |
108 |
109 |
110 |
114 |
115 |
--------------------------------------------------------------------------------