2023最新仿蓝奏云合集下载页面系统源码 带后台版本

article/2025/8/22 15:35:33

2023最新仿蓝奏云合集下载页面系统源码 带后台版本

新版仿蓝奏云合集下载页源码续上次发的仿蓝奏云合集下载单页源码
修复了搜索功能
修复无法下载文件和下载文件为空
更新功能如下
1.增加后台
2.可在后台上传文件及删除文件等信息修改
3.目前仅支持apk,zip,exe,rat,txt文件
4.增加下载次数统计(每日下载和总下载)
5.增加文件下载单页
其他功能自行查看吧

安装教程:源码上传到根目录解压,访问域名进行安装

<?php

define('IN_DISCUZ', TRUE);

define('UC_CLIENT_VERSION', '1.5.0');    //note UCenter 版本标识
define('UC_CLIENT_RELEASE', '20081031');

define('API_DELETEUSER', 1);        //note 用户删除 API 接口开关
define('API_RENAMEUSER', 1);        //note 用户改名 API 接口开关
define('API_GETTAG', 1);        //note 获取标签 API 接口开关
define('API_SYNLOGIN', 1);        //note 同步登录 API 接口开关
define('API_SYNLOGOUT', 1);        //note 同步登出 API 接口开关
define('API_UPDATEPW', 1);        //note 更改用户密码 开关
define('API_UPDATEBADWORDS', 1);    //note 更新关键字列表 开关
define('API_UPDATEHOSTS', 1);        //note 更新域名解析缓存 开关
define('API_UPDATEAPPS', 1);        //note 更新应用列表 开关
define('API_UPDATECLIENT', 1);        //note 更新客户端缓存 开关
define('API_UPDATECREDIT', 1);        //note 更新用户积分 开关
define('API_GETCREDITSETTINGS', 1);    //note 向 UCenter 提供积分设置 开关
define('API_GETCREDIT', 1);        //note 获取用户的某项积分 开关
define('API_UPDATECREDITSETTINGS', 1);    //note 更新应用积分设置 开关

define('API_RETURN_SUCCEED', '1');
define('API_RETURN_FAILED', '-1');
define('API_RETURN_FORBIDDEN', '-2');

define('DISCUZ_ROOT', '../');

//note 普通的 http 通知方式
if(!defined('IN_UC')) {

    error_reporting(0);
    set_magic_quotes_runtime(0);
    
    defined('MAGIC_QUOTES_GPC') || define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
    require_once DISCUZ_ROOT.'./config.inc.php';

    $_DCACHE = $get = $post = array();

    $code = @$_GET['code'];
    parse_str(_authcode($code, 'DECODE', UC_KEY), $get);
    if(MAGIC_QUOTES_GPC) {
        $get = _stripslashes($get);
    }

    $timestamp = time();
    if($timestamp - $get['time'] > 3600) {
        exit('Authracation has expiried');
    }
    if(empty($get)) {
        exit('Invalid Request');
    }
    $action = $get['action'];

    require_once DISCUZ_ROOT.'./uc_client/lib/xml.class.php';
    $post = xml_unserialize(file_get_contents('php://input'));

    if(in_array($get['action'], array('test', 'deleteuser', 'renameuser', 'gettag', 'synlogin', 'synlogout', 'updatepw', 'updatebadwords', 'updatehosts', 'updateapps', 'updateclient', 'updatecredit', 'getcreditsettings', 'updatecreditsettings'))) {
        require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
        $GLOBALS['db'] = new dbstuff;
        $GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
        $GLOBALS['tablepre'] = $tablepre;
        unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
        $uc_note = new uc_note();
        exit($uc_note->$get['action']($get, $post));
    } else {
        exit(API_RETURN_FAILED);
    }

//note include 通知方式
} else {

    require_once DISCUZ_ROOT.'./config.inc.php';
    require_once DISCUZ_ROOT.'./include/db_mysql.class.php';
    $GLOBALS['db'] = new dbstuff;
    $GLOBALS['db']->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
    $GLOBALS['tablepre'] = $tablepre;
    unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
}

class uc_note {

    var $dbconfig = '';
    var $db = '';
    var $tablepre = '';
    var $appdir = '';

    function _serialize($arr, $htmlon = 0) {
        if(!function_exists('xml_serialize')) {
            include_once DISCUZ_ROOT.'./uc_client/lib/xml.class.php';
        }
        return xml_serialize($arr, $htmlon);
    }

    function uc_note() {
        $this->appdir = substr(dirname(__FILE__), 0, -3);
        $this->dbconfig = $this->appdir.'./config.inc.php';
        $this->db = $GLOBALS['db'];
        $this->tablepre = $GLOBALS['tablepre'];
    }

    function test($get, $post) {
        return API_RETURN_SUCCEED;
    }

    function deleteuser($get, $post) {
        $uids = $get['ids'];
        !API_DELETEUSER && exit(API_RETURN_FORBIDDEN);

        return API_RETURN_SUCCEED;
    }

    function renameuser($get, $post) {
        $uid = $get['uid'];
        $usernameold = $get['oldusername'];
        $usernamenew = $get['newusername'];
        if(!API_RENAMEUSER) {
            return API_RETURN_FORBIDDEN;
        }

        return API_RETURN_SUCCEED;
    }

    function gettag($get, $post) {
        $name = $get['id'];
        if(!API_GETTAG) {
            return API_RETURN_FORBIDDEN;
        }
        
        $return = array();
        return $this->_serialize($return, 1);
    }

    function synlogin($get, $post) {
        $uid = $get['uid'];
        $username = $get['username'];
        if(!API_SYNLOGIN) {
            return API_RETURN_FORBIDDEN;
        }

        header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
        _setcookie('Example_auth', _authcode($uid."\t".$username, 'ENCODE'));
    }

    function synlogout($get, $post) {
        if(!API_SYNLOGOUT) {
            return API_RETURN_FORBIDDEN;
        }

        //note 同步登出 API 接口
        header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
        _setcookie('Example_auth', '', -86400 * 365);
    }

    function updatepw($get, $post) {
        if(!API_UPDATEPW) {
            return API_RETURN_FORBIDDEN;
        }
        $username = $get['username'];
        $password = $get['password'];
        return API_RETURN_SUCCEED;
    }

    function updatebadwords($get, $post) {
        if(!API_UPDATEBADWORDS) {
            return API_RETURN_FORBIDDEN;
        }
        $cachefile = $this->appdir.'./uc_client/data/cache/badwords.php';
        $fp = fopen($cachefile, 'w');
        $data = array();
        if(is_array($post)) {
            foreach($post as $k => $v) {
                $data['findpattern'][$k] = $v['findpattern'];
                $data['replace'][$k] = $v['replacement'];
            }
        }
        $s = "<?php\r\n";
        $s .= '$_CACHE[\'badwords\'] = '.var_export($data, TRUE).";\r\n";
        fwrite($fp, $s);
        fclose($fp);
        return API_RETURN_SUCCEED;
    }

    function updatehosts($get, $post) {
        if(!API_UPDATEHOSTS) {
            return API_RETURN_FORBIDDEN;
        }
        $cachefile = $this->appdir.'./uc_client/data/cache/hosts.php';
        $fp = fopen($cachefile, 'w');
        $s = "<?php\r\n";
        $s .= '$_CACHE[\'hosts\'] = '.var_export($post, TRUE).";\r\n";
        fwrite($fp, $s);
        fclose($fp);
        return API_RETURN_SUCCEED;
    }

    function updateapps($get, $post) {
        if(!API_UPDATEAPPS) {
            return API_RETURN_FORBIDDEN;
        }
        $UC_API = $post['UC_API'];

        //note 写 app 缓存文件
        $cachefile = $this->appdir.'./uc_client/data/cache/apps.php';
        $fp = fopen($cachefile, 'w');
        $s = "<?php\r\n";
        $s .= '$_CACHE[\'apps\'] = '.var_export($post, TRUE).";\r\n";
        fwrite($fp, $s);
        fclose($fp);

        //note 写配置文件
        if(is_writeable($this->appdir.'./config.inc.php')) {
            $configfile = trim(file_get_contents($this->appdir.'./config.inc.php'));
            $configfile = substr($configfile, -2) == '?>' ? substr($configfile, 0, -2) : $configfile;
            $configfile = preg_replace("/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '$UC_API');", $configfile);
            if($fp = @fopen($this->appdir.'./config.inc.php', 'w')) {
                @fwrite($fp, trim($configfile));
                @fclose($fp);
            }
        }
    
        return API_RETURN_SUCCEED;
    }

    function updateclient($get, $post) {
        if(!API_UPDATECLIENT) {
            return API_RETURN_FORBIDDEN;
        }
        $cachefile = $this->appdir.'./uc_client/data/cache/settings.php';
        $fp = fopen($cachefile, 'w');
        $s = "<?php\r\n";
        $s .= '$_CACHE[\'settings\'] = '.var_export($post, TRUE).";\r\n";
        fwrite($fp, $s);
        fclose($fp);
        return API_RETURN_SUCCEED;
    }

    function updatecredit($get, $post) {
        if(!API_UPDATECREDIT) {
            return API_RETURN_FORBIDDEN;
        }
        $credit = $get['credit'];
        $amount = $get['amount'];
        $uid = $get['uid'];
        return API_RETURN_SUCCEED;
    }

    function getcredit($get, $post) {
        if(!API_GETCREDIT) {
            return API_RETURN_FORBIDDEN;
        }
    }

    function getcreditsettings($get, $post) {
        if(!API_GETCREDITSETTINGS) {
            return API_RETURN_FORBIDDEN;
        }
        $credits = array();
        return $this->_serialize($credits);
    }

    function updatecreditsettings($get, $post) {
        if(!API_UPDATECREDITSETTINGS) {
            return API_RETURN_FORBIDDEN;
        }
        return API_RETURN_SUCCEED;
    }
}

//note 使用该函数前需要 require_once $this->appdir.'./config.inc.php';
function _setcookie($var, $value, $life = 0, $prefix = 1) {
    global $cookiepre, $cookiedomain, $cookiepath, $timestamp, $_SERVER;
    setcookie(($prefix ? $cookiepre : '').$var, $value,
        $life ? $timestamp + $life : 0, $cookiepath,
        $cookiedomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0);
}

function _authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
    $ckey_length = 4;

    $key = md5($key ? $key : UC_KEY);
    $keya = md5(substr($key, 0, 16));
    $keyb = md5(substr($key, 16, 16));
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

    $cryptkey = $keya.md5($keya.$keyc);
    $key_length = strlen($cryptkey);

    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
    $string_length = strlen($string);

    $result = '';
    $box = range(0, 255);

    $rndkey = array();
    for($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }

    for($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }

    for($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }

    if($operation == 'DECODE') {
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
            return substr($result, 26);
        } else {
                return '';
            }
    } else {
        return $keyc.str_replace('=', '', base64_encode($result));
    }

}

function _stripslashes($string) {
    if(is_array($string)) {
        foreach($string as $key => $val) {
            $string[$key] = _stripslashes($val);
        }
    } else {
        $string = stripslashes($string);
    }
    return $string;
}


http://chatgpt.dhexx.cn/article/amYN1p1s.shtml

相关文章

如何把蓝奏云里的文件进行批量导出分享?蓝奏云批量分享的工具

蓝奏云用的的多了&#xff0c;里面文件管理起来就非常的麻烦&#xff0c;在这里分享一下如何方便得批量分享蓝奏云中的文件。 首先需要下载一个软件 简单麦麦客户端 下载地址在 https://gitee.com/firesuiry/jdmm-client/releases 是个开源的软件 有兴趣可以研究研究 下载完…

php 蓝奏网盘上传文件,教给大家一个蓝奏云高级玩法,如何把文件一键秒上传到蓝奏云网盘...

01 蓝奏云是我最常用的网盘平台 当然这也是在度盘限速之后 毕竟&#xff0c;蓝奏也有几个很大的短板 但整体上是利大于弊&#xff01; 好处就是&#xff0c;整个网盘空间没有上限 不论你上传多少个文件、他都不拦你 另外一点&#xff0c;下载永远都是满速状态 这个真的太香了&a…

解决蓝奏云链接无法访问问题

方法一&#xff1a;修改蓝奏云链接域名 将www.lanzous 后面的 s 改为 x 或者改为 i &#xff0c;www.lanzoux&#xff0c;然后再访问链接即可正常访问。 方法二&#xff1a;油候脚本自动转换蓝奏云链接 脚本地址&#xff1a;蓝奏云连接转换这款脚本可以将蓝奏云网盘链接自动…

【油猴脚本】鼠标选中跳转蓝奏云有效链接及自动填写提取码

简述 鼠标选中蓝奏云链接时会将链接转化为有效链接并显示跳转按钮&#xff0c;如果选中内容包括提取码则会在对应的网页自动填充。 地址&#xff1a;鼠标选中跳转蓝奏云有效链接及自动填写提取码 功能 在鼠标选中的文字是蓝奏云链接时触发脚本&#xff0c;脚本将从选中文字中…

解决:蓝奏云下载链接没法打开问题

假设链接如下&#xff1a; https://wws.lanzous.com/b01hnxn7a 解决: 修改链接&#xff1a;将链接中的lanzous改为lanzoux https://wws.lanzous.com/b01hnxn7a https://wws.lanzoux.com/b01hnxn7a

php蓝奏云网盘源码,蓝奏云网盘pc版易语言开源软件源码

蓝奏云盘是由网友开发的蓝奏云网盘客户端软件&#xff0c;软件界面简洁&#xff0c;简单易用 很多人喜欢&#xff0c;所以大家找了&#xff0c;蓝奏云网盘PC客户端开源源码&#xff0c;此软件源代码全部为 易语言5.6版本编写。 蓝奏云盘源码特色&#xff1a; 1.支持上传任意文件…

蓝奏云直链解析php,【带源码】新思路--蓝奏云直链解析

本帖最后由 Ls30 于 2018-7-11 18:06 编辑 今天在我的群上看到了个买 的还留下了个链接&#xff0c; 打开后我的手机浏览器跳转到了蓝奏云的一个下载页面&#xff0c; 惊奇的发现手机打开这个下载页面与电脑端的不同&#xff0c; 我猜测这是否与电脑端的解析方式有着一定的联系…

【实用软件】蓝奏云批量下载工具

软件介绍 蓝奏是个非主流网盘&#xff0c;老司机们用的比较多&#xff0c;官方限制最大上传文件为100M&#xff0c;不能分享视频等大文件&#xff0c;限制了它的用处。一般应用于分享软件&#xff0c;小型文档&#xff0c;除了下载页面有广告之外&#xff0c;下载速度很快&…

蓝奏云无视密码强制下载器

介绍&#xff1a; 可以强制下载有带密码的蓝凑云链接&#xff0c;只支持直接的分享链接&#xff08;就是蓝凑云的域名加后面的分享的那一段&#xff0c;像我下面图一有那个tp就得把他删除&#xff09;要使用软件内的下载文件&#xff0c;就要打开悬浮窗&#xff01;&#xff0…

蓝奏云软件库源码分享下载

介绍&#xff1a; 蓝奏云软件库&#xff0c;添加分类填入蓝奏云文件夹分享链接&#xff0c;链接密码即可。 非 webview 为接口式获取文件列表&#xff0c;不存储本地&#xff0c;只用在蓝奏云上传文件即可。 后端 thinkphp&#xff0c;前端 uniapp&#xff08;我测试了下发现…

蓝奏云分享文件无法下载地址失效的解决办法

由于蓝奏盘的分享地址经常失效和更改&#xff0c;导致我们分享的下载地址打不开&#xff0c;很多人不知道怎么回事&#xff0c;老是问我蓝奏云下载链接打不开怎么办&#xff0c;今天就给大家讲讲怎么解决这个问题。 解决办法&#xff1a; 如果你打开别人分享的蓝奏云提示的是是…

蓝奏云直链解析

[玫瑰]蓝奏云直链获取在线解析网站源码 蓝奏云链接解析 本地API接口 [玫瑰]支持有无密码和短期直链和永久直链&#xff0c;同时还可以显示文件名和大小。 [玫瑰]这个解析器无需数据库即可搭建&#xff0c;API接口已经本地化&#xff0c;非常简单易用。 [玫瑰]解压密码 123321 链…

Linux下载蓝奏云文件,蓝奏云CMD控制台

蓝奏云CMD控制台是一个蓝奏云的第三方API客户端&#xff0c;封装了对蓝奏云的基本操作: 登录、列出文件、下载文件、上传文件、删除文件(夹)、 清空回收站、恢复文件、创建文件夹、设置文件(夹)访问密码。此外&#xff0c;还解决了蓝奏云的上传格式限制和单文件最大 100MB 的限…

蓝奏云下载地址解析API[直链]

3 月&#xff0c;跳不动了&#xff1f;>>> 介绍 蓝奏云下载地址解析API 模拟蓝奏云真实操作获取下载地址. 下载地址:https://www.90pan.com/b1748355 密码&#xff1a;9zz7 开源地址: https://gitee.com/web/lanzou 软件架构 1.支持检测文件是否被取消 2.支持带密码…

推荐5款免费网盘,空间大不限速!

【欢迎关注公众号“SRE运维部落”&#xff0c;学习资料&#xff0c;电影资源免费送】 最近各个云服务商的存储空间大战基本落幕了&#xff0c;百度云先期胜出&#xff0c;自从PanDownload出事之后&#xff0c;很多小伙伴对收费限速行为表示不满&#xff0c;在这里给大家推荐5款…

将大于100M的文件上传到蓝奏云的方法

简 介&#xff1a;蓝奏云存储文件时最大只能存储100MB的文件&#xff0c;但有时需要存储大于100MB的文件&#xff08;如视频等&#xff09;。本文给出了存储大文件的方法——分卷压缩上传。 关键词&#xff1a; 蓝奏云、分卷压缩、文件存储 01 问题背景 蓝奏云是一个比较好用的…

蓝奏云网盘下载链接无法打开的解决方法(详解 全)

&#x1f388;前言 蓝奏云是一家国内的比较有良心的网盘提供商&#xff0c;提供有不限量的网盘空间&#xff0c;且不限制下载速度&#xff0c;免费用户只限制上传单文件小于100M的文件。算是比较有良心的。而且下载还不用登录才能下载&#xff08;很多标称免费的网盘均需要下载…

【策略模式-strategy】

1&#xff1a;定义&#xff1a; 在《head first Design Pattern》中的定义是&#xff1a;策略模式定义了算法族&#xff0c;分别分装起来&#xff0c;让它们之间可以相互替换&#xff0c;此模式让算法的变化独立于使用算法的客户。 2&#xff1a;设计原则 1) 找出应用中可能需…

策略模式——Strategy

文章目录 案例展示——Strategy怎么用&#xff1f;深入分析——Strategy是什么&#xff1f;Strategy的定义Strategy的优点Strategy的缺点策略模式的扩展——策略枚举 参考 案例展示——Strategy怎么用&#xff1f; 了解一点历史的人都知道商鞅变法&#xff0c;正是由于商鞅变法…

策略模式,Strategy

策略模式的定义是&#xff1a; 定义一组算法&#xff0c;封装每个算法&#xff0c;让它们可以互换。让客户端可以单独切换算法。 其UML类图的示例如下&#xff1a; 在这个模式中&#xff0c;参与者包括&#xff1a; Strategy&#xff1a;为所有支持的算法声明一个共同的接口。…