├── .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 |
18 |
19 | 添加限制(个) 20 | 21 |
22 |
23 | > 24 |
25 |
26 | 27 |
-------------------------------------------------------------------------------- /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 |
290 | 291 | 292 | 293 | 297 | 303 | 304 | 305 | 309 | 313 | 314 | 315 | 318 | 319 | 320 | 321 |
294 | 开启云封禁
295 | 开启后每天会对列表用户进行封禁处理 296 |
298 | > 开启 300 | > 关闭 302 |
306 | 封禁提示内容
307 | 用户被封禁后消息中心显示的提示内容 308 |
310 | " 311 | placeholder='请设置用户被封禁提示的内容(留空使用默认"您因为违反吧规,已被吧务封禁,如有疑问请联系吧务")'> 312 |
316 | 317 |
322 |
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 |
349 |
350 | 351 |
352 |
353 |
354 | header 355 |
356 |
357 |

360 |

361 |
362 |

~
363 |

364 |
365 |
366 |
367 | 个人主页 368 | 369 | 370 |
371 |
372 | 390 | 391 | 416 |
417 | 418 |
419 | 420 |
421 | 422 | 添加用户 423 | 清空列表 424 |
425 | 426 | 427 | 450 | 451 | -------------------------------------------------------------------------------- /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 |
35 | 36 | 37 | 38 | 42 | 46 | 47 | 48 | 51 | 52 | 53 | 54 |
39 | 开启抽奖
40 | 开启后每日12时开始进行两次抽奖 41 |
43 | > 开启 44 | > 关闭 45 |
49 | 50 |
55 |
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 ""; 99 | } 100 | if (empty($a)) { 101 | echo ""; 102 | } ?> 103 | 104 |
序号结果奖品时间
{$x['id']}{$x['result']}{$x['prize']}{$date}
暂无抽奖记录
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 |
21 | 22 |
23 | 最多可用次数(条) 24 | 25 |
26 |
27 | 28 |
29 | 默认回复单帖(次) 30 | 31 |
32 |
33 |
34 | 相同PID间隔(秒) 35 | 36 |
37 |
38 |
39 | 添加广告后缀(内) 40 | 41 |
42 |
43 |
44 | 图灵机器人APIKEY(未使用) 45 | 46 |
47 |
48 |
49 | 50 |
-------------------------------------------------------------------------------- /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 | 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 | 338 | 341 | 342 | 343 | 344 | 345 | 349 | 350 | 372 | '; 376 | } ?> 377 | 378 |
序号贴吧帖子剩余成功失败日志
340 | ' . $r1['pname'] . '' : '随机回复' ?> 346 | 查看 348 |
暂无帖子
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 |
413 | 414 | 415 | 416 | 420 | 424 | 425 | 426 | 430 | 434 | 435 | 436 | 440 | 450 | 451 | 452 | 456 | 460 | 461 | 462 | 465 | 466 | 467 | 468 |
417 | 客户端回帖总开关
418 | 设置为关闭则不会执行云灌水 419 |
421 | > 开启 422 | > 关闭 423 |
427 | 回帖间隔总开关
428 | 开启则回帖间隔会在你设置的基础上随机 429 |
431 | > 开启 432 | > 关闭 433 |
437 | 客户端类型
438 | 你可以自定义回帖来源 439 |
441 | 449 |
453 | 回帖内容前后缀
454 | 你可以自定义回帖内容的前缀和后缀 455 |
457 | 458 | 459 |
463 | 464 |
469 |
470 |
471 |

添加要回复的帖子(每个百度ID次数:次)

472 |
473 |

不添加帖子/贴吧系统会直接跳过呦

474 |
475 |
476 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"); ?> 479 | 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 | 502 | 503 | 504 | 505 | 506 | 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 | 518 | 519 | 522 | 523 | 524 | 525 | 530 | 531 | 583 | 609 | '; 613 | } ?> 614 | 615 |
ID时间贴吧帖子每日(次)间隔(s)操作
521 | ' . $r1['pname'] . '' : '随机回复' ?> 526 | 编辑 528 | 删除 529 |
暂无帖子
616 |
617 | 620 |
621 |
622 | 623 | 添加帖子 624 | 添加贴吧 625 | 清空列表 626 |


627 |

添加回帖内容

628 |
629 |

回帖时随机使用其中之一,不添加的话会自动从句子迷获取灌水内容

630 | 631 | 632 | 633 | 634 | 635 | 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 | 648 | 649 | 650 | 654 | 655 | 689 | 712 | '; 716 | } ?> 717 | 718 | 719 |
序号帖子ID内容操作
651 | 编辑 652 | 删除 653 |
暂无内容
720 | 添加内容 721 | 清空列表 722 |
723 |
724 | 726 | 727 | 809 | 810 | 876 | 877 | 878 | 901 | 902 | 903 | 939 | 940 | -------------------------------------------------------------------------------- /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 |
74 | 75 | 76 | 77 | 81 | 87 | 88 | 89 | 92 | 93 | 94 | 95 |
78 | 开启助攻
79 | 开启后每日会对设置的名人进行助攻 80 |
82 | > 开启 84 | > 关闭 86 |
90 | 91 |
96 |
97 |
98 |

助攻日志

99 |
100 |
101 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"); 104 | ?> 105 | 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 | 144 | 146 | 147 | 148 | 152 | 156 | 157 | 178 | 203 | "; 207 | } ?> 208 | 209 |
序号贴吧名人时间日志操作
149 | 查看 151 | 153 | 删除 155 |
暂无助攻记录
210 |
211 | 215 |
216 |
217 | 添加名人 218 | 清空列表 219 | 贴吧名人堂 220 | 221 | 222 | 284 | 285 | -------------------------------------------------------------------------------- /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 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid`"); 35 | while ($x = $m->fetch_array($wr)) { 36 | ?> 37 | 38 | 39 | 40 | 45 | 46 | 47 | 50 | 51 |
ID百度ID贴吧数操作
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 | 刷新
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 |
18 |
19 | 用户可添加贴吧数量 20 | 21 |
22 |
23 |
24 | 最低扫描时间 25 | 26 |
27 |
28 |
29 | 30 |
-------------------------------------------------------------------------------- /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 |
128 | 129 | 130 | 131 | 135 | 141 | 142 | 143 | 146 | 147 | 148 | 149 |
132 | 开启审查功能
133 | 开启后会对设置的贴吧的首页内容进行关键字审查 134 |
136 | > 开启 138 | > 关闭 140 |
144 | 145 |
150 |
151 |
152 |

贴吧扫描日志

153 |
154 | 155 |
156 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"); 159 | ?> 160 | 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 | 210 | 212 | 213 | 214 | 219 | 220 | 252 | 253 | 278 | '; 282 | } ?> 283 | 284 |
序号贴吧名称间隔(秒)上次执行可选操作
215 | 编辑 216 | 删除 218 |
暂无需要扫描的贴吧
285 |
286 | 290 |
291 |
292 | 293 | 添加贴吧 294 | 清空列表 295 | 296 | 319 | 320 | -------------------------------------------------------------------------------- /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 |
35 | 36 | 37 | 38 | 42 | 48 | 49 | 50 | 53 | 54 | 55 | 56 |
39 | 开启知道签到
40 | 开启后每天会对百度知道进行签到 41 |
43 | > 开启 45 | > 关闭 47 |
51 | 52 |
57 |
58 |
59 |

签到日志

60 |
61 |
62 | query("SELECT * FROM `" . DB_NAME . "`.`" . DB_PREFIX . "baiduid` WHERE `uid` = {$uid}"); 65 | ?> 66 | 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 ""; 103 | } 104 | if (empty($a)) { 105 | echo ""; 106 | } ?> 107 | 108 |
序号结果时间
{$x['id']}{$x['result']}{$date}
暂无签到记录
109 |
110 | 114 |
115 |
--------------------------------------------------------------------------------