destoon二次开发需要准备什么,有什么流程

destoon二次开发需要准备什么,有什么流程

 

<?php

代码首先包含common.inc.php文件

在common.inc.php文件中,首先定义常量。

define(‘IN_DESTOON’, true);

define(‘IN_ADMIN’, defined(‘DT_ADMIN’) ? true : false);

define(‘DT_ROOT’, str_replace(“\”, ‘/’, dirname(__FILE__)));

if(defined(‘DT_REWRITE’)) include DT_ROOT.’/include/rewrite.inc.php’;//是否定义了url伪静态?

$CFG = array();//网站整体配置信息

require DT_ROOT.’/config.inc.php’;//—————–网站配置文件

define(‘DT_PATH’, $CFG[‘url’]);

define(‘DT_DOMAIN’, $CFG[‘cookie_domain’] ? substr($CFG[‘cookie_domain’], 1) : ”);

define(‘DT_WIN’, strpos(strtoupper(PHP_OS), ‘WIN’) !== false ? true: false);

define(‘DT_CHMOD’, ($CFG[‘file_mod’] && !DT_WIN) ? $CFG[‘file_mod’] : 0);

define(‘DT_URL’, $CFG[‘url’]);//Fox 3.x

define(‘DT_LANG’, $CFG[‘language’]);

define(‘DT_KEY’, $CFG[‘authkey’]);

define(‘DT_CHARSET’, $CFG[‘charset’]);

define(‘DT_CACHE’, $CFG[‘cache_dir’] ? $CFG[‘cache_dir’] : DT_ROOT.’/file/cache’);

define(‘DT_SKIN’, DT_PATH.’skin/’.$CFG[‘skin’].’/’);

define(‘SKIN_PATH’, DT_PATH.’skin/’.$CFG[‘skin’].’/’);//For 2.x

define(‘VIP’, $CFG[‘com_vip’]);

define(‘errmsg’, ‘Invalid Request’);

随后加载网站基本功能

$L = array();

include DT_ROOT.’/lang/’.DT_LANG.’/lang.inc.php’;//语言信息

require DT_ROOT.’/version.inc.php’;

require DT_ROOT.’/include/global.func.php’;//——–全局函数

require DT_ROOT.’/include/tag.func.php’;//———–标签函数

require DT_ROOT.’/api/im.func.php’;//—————-聊天工具

require DT_ROOT.’/api/extend.func.php’;//————自己写的扩展函数

if(!$MQG && $_POST) $_POST = daddslashes($_POST);

if(!$MQG && $_GET) $_GET = daddslashes($_GET);

if(function_exists(‘date_default_timezone_set’)) date_default_timezone_set($CFG[‘timezone’]);

$DT_PRE = $CFG[‘tb_pre’];

$DT_QST = $_SERVER[‘QUERY_STRING’];//—————-querystring

$DT_TIME = time() + $CFG[‘timediff’];//————–当前时间

$DT_IP = get_env(‘ip’);

$DT_URL = get_env(‘url’);

$DT_REF = get_env(‘referer’);

$DT_BOT = is_robot();

链接数据库,建立缓存。

header(“Content-Type:text/html;charset=”.DT_CHARSET);

require DT_ROOT.’/include/db_’.$CFG[‘database’].’.class.php’;//加载数据库类

require DT_ROOT.’/include/cache_’.$CFG[‘cache’].’.class.php’;//加载缓存类

if($_POST) extract($_POST, EXTR_SKIP);//解析post请求的数据

if($_GET) extract($_GET, EXTR_SKIP);//解析get请求的数据

$db_class = ‘db_’.$CFG[‘database’];

$db = new $db_class;

$db->halt = (DT_DEBUG || IN_ADMIN) ? 1 : 0;

$db->pre = $CFG[‘tb_pre’];

$db->connect($CFG[‘db_host’], $CFG[‘db_user’], $CFG[‘db_pass’], $CFG[‘db_name’], $CFG[‘db_expires’], $CFG[‘db_charset’], $CFG[‘pconnect’]);

$dc = new dcache();

$dc->pre = $CFG[‘cache_pre’];

加载模块的基本配置

$DT = $MOD = $EXT = $CSS = $DTMP = $CAT = $ARE = $AREA = array();

$CACHE = cache_read(‘module.php’);

if(!$CACHE) {

//没有缓存模块,就读取缓存模块。

require_once DT_ROOT.’/admin/global.func.php’;

require_once DT_ROOT.’/include/post.func.php’;

require_once DT_ROOT.’/include/cache.func.php’;

cache_all();

$CACHE = cache_read(‘module.php’);

}

$DT = $CACHE[‘dt’];

$MODULE = $CACHE[‘module’];

$EXT = cache_read(‘module-3.php’);

加载模块,读取模块信息,引入模块文件

if(!isset($moduleid)) {

$moduleid = 1;

$module = ‘destoon’;

} else if($moduleid == 1) {

$module = ‘destoon’;

} else {

$moduleid = intval($moduleid);

isset($MODULE[$moduleid]) or dheader(DT_PATH);

$module = $MODULE[$moduleid][‘module’];

$MOD = $moduleid == 3 ? $EXT : cache_read(‘module-‘.$moduleid.’.php’);

include DT_ROOT.’/lang/’.DT_LANG.’/’.$module.’.inc.php’;

}

$forward = isset($forward) ? urldecode($forward) : $DT_REF;//————来源页面

$action = isset($action) ? trim($action) : ”;//————-动作指令

//判断用户登录

$destoon_auth = get_cookie(‘auth’);

if($destoon_auth) {

$_dauth = explode(“t”, decrypt($destoon_auth, md5(DT_KEY.$_SERVER[‘HTTP_USER_AGENT’])));

//print_r($_dauth);SELECT userid,username,groupid,admin FROM destoon_member

$_userid = isset($_dauth[0]) ? intval($_dauth[0]) : 0;

$_username = isset($_dauth[1]) ? trim($_dauth[1]) : ”;

$_groupid = isset($_dauth[2]) ? intval($_dauth[2]) : 3;

$_admin = isset($_dauth[4]) ? intval($_dauth[4]) : 0;

if($_userid && !defined(‘DT_NONUSER’)) {

$_password = isset($_dauth[3]) ? trim($_dauth[3]) : ”;

$user = $db->get_one(“SELECT username,passport,company,truename,password,groupid,email,message,chat,sound,online,sms,credit,money,loginip,admin,aid,edittime,trade FROM {$DT_PRE}member WHERE userid=$_userid”);

if($user && $user[‘password’] == $_password) {

if($user[‘groupid’] == 2) dalert(lang(‘message->common_forbidden’));//禁止用户访问的组别

extract($user, EXTR_PREFIX_ALL, ”);

if($user[‘loginip’] != $DT_IP && ($DT[‘ip_login’] == 2 || ($DT[‘ip_login’] == 1 && IN_ADMIN))) {

//单点登录,判断ip

$_userid = 0; set_cookie(‘auth’, ”);

dalert(lang(‘message->common_login’, array($user[‘loginip’])), DT_PATH);

}

} else {

//登录失败

$_userid = 0;

if($db->linked && !isset($swfupload) && strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Flash’) === false) set_cookie(‘auth’, ”);

}

unset($destoon_auth, $user, $_dauth, $_password);

}

}

if($_userid == 0) { $_groupid = 3; $_username = ”; }

if(!IN_ADMIN) {

if($_groupid == 1) include DT_ROOT.’/module/member/admin.inc.php’;

if($_userid && !defined(‘DT_NONUSER’)) {

$db->query(“REPLACE INTO {$DT_PRE}online (userid,username,ip,moduleid,online,lasttime) VALUES (‘$_userid’,’$_username’,’$DT_IP’,’$moduleid’,’$_online’,’$DT_TIME’)”);

}

else {

if(timetodate($DT_TIME, ‘i’) == 10) {

$lastime = $DT_TIME – $DT[‘online’];

$db->query(“DELETE FROM {$DT_PRE}online WHERE lasttime<$lastime”);

}

}

}

$MG = cache_read(‘group-‘.$_groupid.’.php’);//读取用户组别配置

$_areaids = ”;

$_areaid = array();

if($DT[‘city’]) {

$AREA or $AREA = cache_read(‘area.php’);

if($_aid) {

$_areaids = $AREA[$_aid][‘child’] ? $AREA[$_aid][‘arrchildid’] : $_aid;

$_areaid = explode(‘,’, $_areaids);

}

} else {

$_aid < 1 or dalert(‘系统未开启分站功能,您的分站管理帐号暂不可用’, $MODULE[2][‘linkurl’].’logout.php’);

}

$session = new dsession();

require DT_ROOT.’/admin/global.func.php’;

require DT_ROOT.’/include/post.func.php’;

require_once DT_ROOT.’/include/cache.func.php’;

isset($file) or $file = ‘index’;

$secretkey = ‘admin_’.strtolower(substr($CFG[‘authkey’], -6));

//echo $secretkey;exit;

if($DT[‘authadmin’] == ‘session’) {

$_destoon_admin = isset($_SESSION[$secretkey]) ? intval($_SESSION[$secretkey]) : 0;

} else {

$_destoon_admin = get_cookie($secretkey);

$_destoon_admin = $_destoon_admin ? intval($_destoon_admin) : 0;

}

$_founder = $CFG[‘founderid’] == $_userid ? $_userid : 0;

$_catids = $_childs = ”;

$_catid = $_child = array();

if($file != ‘login’) {

if($_groupid != 1 || $_admin < 1 || !$_destoon_admin) msg(”, ‘?file=login&forward=’.urlencode($DT_URL));

//判断用户是否已经登录?如果未登录,直接跳转到登录页面。防止用户构造url。

if(!admin_check()) {

admin_log(1);

$db->query(“DELETE FROM { $db->pre}admin WHERE userid=$_userid AND url=’?”.$DT_QST.”‘”);

msg(‘警告!您无权进行此操作 Error(00)’);

}

}

//是否记录日志

if($DT[‘admin_log’] && $action != ‘import’) admin_log();

if($DT[‘admin_online’]) admin_online();

$psize = isset($psize) ? intval($psize) : 0;

if($psize > 0 && $psize != $pagesize) {

$pagesize = $psize;

$offset = ($page-1)*$pagesize;

}

if($module == ‘destoon’) {

(include DT_ROOT.’/admin/’.$file.’.inc.php’) or msg();

} else {

echo $file.’|’.$module;

include DT_ROOT.’/module/’.$module.’/common.inc.php’;//加载模块下的common文件

(include MD_ROOT.’/admin/’.$file.’.inc.php’) or msg();//加载模块文件

}

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/115401.html<

(0)
管理的头像管理
上一篇2025-02-18 02:18
下一篇 2025-02-18 02:19

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注