Files

666 lines
23 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* https://www.besyun.com
* BESCMS
* 本文件是框架系统文件,二次开发时不可以修改本文件
*
* (c) 北斯云
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
**/
// CMS框架目录
if (!defined('FRAMEPATH')) {
$frame = 'System';
if (is_file(WRITEPATH.'frame.lock')) {
$name = (string)file_get_contents(WRITEPATH.'frame.lock');
if (is_file(FCPATH.$name.'/Init.php')) {
$frame = $name;
}
}
// 低版本兼容
if ($frame == 'System' && version_compare(PHP_VERSION, '8.0') < 0 && is_file(FCPATH.'CodeIgniter/Init.php')) {
$frame = 'CodeIgniter';
} elseif ($frame == 'System' && version_compare(PHP_VERSION, '7.4') < 0 && is_file(FCPATH.'CodeIgniter72/Init.php')) {
$frame = 'CodeIgniter72';
}
define('FRAMEPATH', FCPATH.$frame.'/');
}
// CMS公共程序目录
!defined('CMSPATH') && define('CMSPATH', FCPATH.'Fcms/');
!defined('MAX_CATEGORY') && define('MAX_CATEGORY', 300); // 老版本
define('COREPATH', CMSPATH); // 老版本别名
define('BASEPATH', FRAMEPATH.'System/'); // 老版本别名
// 主配置目录
!defined('CONFIGPATH') && define('CONFIGPATH', ROOTPATH.'config/');
// App程序目录
!defined('APPSPATH') && define('APPSPATH', FCPATH.'App/');
// 程序初始化
!defined('MYPATH') && define('MYPATH', FCPATH.'My/');
// 定义模板目录
!defined('TPLPATH') && define('TPLPATH', dirname(FCPATH).'/template/');
// 是否可编辑后模板
!defined('IS_EDIT_TPL') && define('IS_EDIT_TPL', 0);
// 是否启用高级开发模式
!defined('IS_XRDEV') && define('IS_XRDEV', 0);
// 定义移动端模板目录
!defined('MOBILE_TPL_DIR') && define('MOBILE_TPL_DIR', 'mobile');
// 编辑器的图片的title和alt默认占位字符
!defined('UEDITOR_IMG_TITLE') && define('UEDITOR_IMG_TITLE', '{cms_img_title}');
// tests
define('TESTPATH', WRITEPATH.'tests/');
// temp目录
define('TEMPPATH', CMSPATH.'Temp/');
// COMPOSER文件
!defined('COMPOSER_PATH') && define('COMPOSER_PATH', is_file(FCPATH . 'Vendor/autoload.php') ? FCPATH . 'Vendor/autoload.php' : (is_file(FCPATH . 'vendor/autoload.php') ? FCPATH . 'vendor/autoload.php' : ROOTPATH . 'vendor/autoload.php'));
// 是否来自ajax提交
define('IS_AJAX', (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'));
// 是否来自post提交
define('IS_POST', isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST' ? TRUE : FALSE);
define('IS_AJAX_POST', IS_POST);
// 当前系统时间戳
define('SYS_TIME', $_SERVER['REQUEST_TIME'] ? $_SERVER['REQUEST_TIME'] : time());
// 自定义函数库
if (is_file(WEBPATH.'config/custom.php')) {
require WEBPATH.'config/custom.php';
} elseif (is_file(CONFIGPATH.'custom.php')) {
require CONFIGPATH.'custom.php';
}
if (is_file(MYPATH.'Helper.php')) {
require MYPATH.'Helper.php';
}
// 系统变量
$system = [
'SYS_DEBUG' => 0,
'SYS_ADMIN_CODE' => 0,
'SYS_ADMIN_LOG' => 0,
'SYS_AUTO_FORM' => 0,
'SYS_ADMIN_PAGESIZE' => 10,
'SYS_CRON_AUTH' => '',
'SYS_TABLE_ISFOOTER' => 0,
'SYS_SMS_IMG_CODE' => 0,
'SYS_GO_404' => 0,
'SYS_THEME_ROOT_PATH' => 0,
'SYS_301' => 0,
'SYS_NOT_UPDATE' => 0,
'SYS_URL_ONLY' => 0,
'SYS_URL_REL' => 0,
'SYS_KEY' => 'xunruicms',
'SYS_API_TOKEN' => '',
'SYS_CSRF' => 1,
'SYS_CSRF_TIME' => 0,
'SYS_API_REL' => 0,
'SYS_HTTPS' => 0,
'SYS_NOT_ADMIN_CACHE' => 1,
'SYS_ADMIN_MODE' => 0,
'SYS_ADMIN_LOGINS' => 0,
'SYS_ADMIN_LOGIN_AES' => 0,
'SYS_ATTACHMENT_DOWN_REMOTE' => 0,
'SYS_ATTACHMENT_DOWN_SIZE' => 50,
'SYS_ADMIN_LOGIN_TIME' => 0,
'SYS_LOGIN_AES' => 0,
'SYS_ADMIN_OAUTH' => 0,
'SYS_ADMIN_SMS_LOGIN' => 0,
'SYS_ADMIN_SMS_CHECK' => 0,
'SYS_ATTACHMENT_DB' => 1,
'SYS_ATTACHMENT_PAGESIZE' => 36,
'SYS_ATTACHMENT_GUEST' => 0,
'SYS_ATTACHMENT_CF' => 0,
'SYS_ATTACHMENT_REL' => 0,
'SYS_ATTACHMENT_PATH' => '',
'SYS_ATTACHMENT_SAVE_TYPE' => '',
'SYS_ATTACHMENT_SAVE_DIR' => '',
'SYS_ATTACHMENT_SAVE_ID' => '',
'SYS_ATTACHMENT_URL' => '',
'SYS_AVATAR_PATH' => '',
'SYS_AVATAR_URL' => '',
'SYS_API_CODE' => '',
'SYS_ATTACHMENT_SAFE' => '',
];
if (is_file(WRITEPATH.'config/system.php')) {
$my = require WRITEPATH.'config/system.php';
} else {
$my = [];
}
// 强制禁用301
if (defined('IS_NOT_301') && IS_NOT_301) {
$my['SYS_301'] = 1;
}
foreach ($system as $var => $value) {
if (!defined($var)) {
define($var, isset($my[$var]) ? $my[$var] : $value);
}
}
unset($my, $system);
!defined('IS_ADMIN_CACHE') && define('IS_ADMIN_CACHE', '1'); // 已废弃
!defined('SQGS') && define('SQGS', '迅睿开源框架');
!defined('CI_DEBUG') && define('CI_DEBUG', IS_DEV ? true : IS_ADMIN && SYS_DEBUG);
!defined('IS_FB_DEBUG') && define('IS_FB_DEBUG', CI_DEBUG ? 0 : 1);
// 显示错误提示
IS_ADMIN || IS_DEV ? error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED) : error_reporting(0);
// 显示错误提示
if (CI_DEBUG) {
ini_set('display_errors', 1);
// 重置Zend OPcache
function_exists('opcache_reset') && opcache_reset();
define('ENVIRONMENT', 'development');
} else {
ini_set('display_errors', 0);
!defined('ENVIRONMENT') && define('ENVIRONMENT', 'production');
}
// 缓存变量
$cache = [];
if (is_file(WRITEPATH.'config/cache.php')) {
$cache = require WRITEPATH.'config/cache.php';
IS_DEV && $cache['SYS_CACHE'] = 0; // 开发者模式下关闭缓存
}
foreach ([
'SYS_CACHE',
'SYS_CACHE_TYPE',
'SYS_CACHE_SHOW',
'SYS_CACHE_LIST',
'SYS_CACHE_SEARCH',
'SYS_CACHE_SMS',
'SYS_CACHE_CRON',
'SYS_CACHE_CLEAR',
] as $name) {
define($name, isset($cache[$name]) ? floatval($cache[$name]) : 0);
}
unset($cache);
// 自定义开发目录分布
if (IS_XRDEV) {
require MYPATH.'Dev.php';
} else {
// 判断是否是app目录
function dr_is_app_dir($name) {
if (!$name) {
return false;
} elseif ($name == 'module') {
$name = 'cms';
}
return is_dir(APPSPATH.ucfirst($name));
}
// 获取指定app目录
function dr_get_app_dir($name) {
if (!$name) {
return false;
} elseif ($name == 'module') {
$name = 'cms';
}
return APPSPATH.ucfirst($name).'/';
}
// 获取模板目录
function dr_get_app_tpl($name = '') {
return TPLPATH;
}
// 获取app目录
function dr_get_app_list() {
return APPSPATH;
}
// 获取app的css地址
function dr_get_app_css($name) {
if ($name == 'module') {
$name = 'cms';
}
return (defined('THEME_PATH') ? THEME_PATH : '/static/').$name.'/';
}
// 获取app的css目录
function dr_get_app_css_dir($name) {
if ($name == 'module') {
$name = 'cms';
}
return WEBPATH.'static/'.$name.'/';
}
}
/*
* 重写日志记录函数
*/
function log_message($level, $message, array $context = []) {
return \Phpcmf\Service::Log($level, $message, $context);
}
// 兼容错误提示
function dr_show_error($msg, $dev = '') {
if (CI_DEBUG) {
$log = 'ERROR - '.date('Y-m-d H:i:s'). ' --> '.$msg . ''.FC_NOW_URL.'';
$file = WRITEPATH . 'error/log-'.date('Y-m-d').'.php';
if (!is_file($file)) {
file_put_contents($file, "<?php if (!defined('BASEPATH')) exit('No direct script access allowed');?>".PHP_EOL.$log);
} else {
file_put_contents($file, $log.PHP_EOL, FILE_APPEND);
}
}
if ($dev && !CI_DEBUG) {
$msg = $dev;
}
if (!IS_ADMIN) {
// 前端不显示错误详情
if (CI_DEBUG) {
$url = '<p>'.FC_NOW_URL.'</p>';
} else {
$url = '<p>在index.php中开启开发者模式可以看到故障详细情况</p>';
$msg = '您的系统遇到了故障,请联系管理员处理';
http_response_code(404);
}
}
if (IS_AJAX) {
$msg = json_encode([
'code' => 0,
'msg' => $msg
],JSON_UNESCAPED_UNICODE);
if (isset($_GET['callback']) && $_GET['callback']) {
echo $_GET['callback'].'('.$msg.')';exit;
} else {
echo $msg;exit;
}
} else {
exit("<!DOCTYPE html><html lang=\"zh-cn\"><head><meta charset=\"utf-8\"><title>系统错误</title><style> div.logo { height: 200px; width: 155px; display: inline-block; opacity: 0.08; position: absolute; top: 2rem; left: 50%; margin-left: -73px; } body { height: 100%; background: #fafafa; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif; color: #777; font-weight: 300; } h1 { font-weight: lighter; letter-spacing: 0.8; font-size: 3rem; margin-top: 0; margin-bottom: 0; color: #222; } .wrap { max-width: 1024px; margin: 5rem auto; padding: 2rem; background: #fff; text-align: center; border: 1px solid #efefef; border-radius: 0.5rem; position: relative; } pre { white-space: normal; margin-top: 1.5rem; } code { background: #fafafa; border: 1px solid #efefef; padding: 0.5rem 1rem; border-radius: 5px; display: block; } p { margin-top: 1.5rem; } .footer { margin-top: 2rem; border-top: 1px solid #efefef; padding: 1em 2em 0 2em; font-size: 85%; color: #999; } a:active, a:link, a:visited { color: #dd4814; }</style></head><body><div class=\"wrap\"><p>{$msg}</p>{$url}</div></body></html>");
}
}
/**
* 全局返回消息
*/
function dr_exit_msg($code, $msg, $data = [], $token = []) {
if (!CI_DEBUG) {
ob_end_clean();
}
$rt = [
'code' => $code,
'msg' => $msg,
'data' => $data,
'token' => $token,
];
if (isset($_GET['callback'])) {
// jsonp
header('HTTP/1.1 200 OK');
log_message('error', $msg . ''.FC_NOW_URL.'');
echo ($_GET['callback'] ? $_GET['callback'] : 'callback').'('.json_encode($rt, JSON_UNESCAPED_UNICODE).')';
} else if (($_GET['is_ajax'] || (defined('IS_API_HTTP') && IS_API_HTTP) || IS_AJAX)) {
// json
header('HTTP/1.1 200 OK');
log_message('error', $msg . ''.FC_NOW_URL.'');
echo json_encode($rt, JSON_UNESCAPED_UNICODE);
} else {
// html
dr_show_error($msg);
}
exit;
}
/*
* 伪静态中获取uri
*/
if (!function_exists('dr_get_rewrite_uri')) {
function dr_get_rewrite_uri($uu) {
// 以index.php或者?开头的uri不做处理
return strpos($uu, SELF) === 0 || strpos($uu, '?') === 0 ? '' : $uu;
}
}
/*
* 读取伪静态路由储存路径
*/
function dr_rewrite_routes_path($uri) {
$uri = trim($uri, '/');
$path = WRITEPATH . 'route/'.(defined('SITE_ID') ? SITE_ID : 1).'/'; // 路由缓存根目录
$hash = md5($uri); // 用MD5做均匀散列(核心:解决目录拥挤)
$dir1 = substr($hash, 0, 2); // 一级目录
$dir2 = substr($hash, 2, 2); // 二级目录
$save = $path . '/' . $dir1 . '/' . $dir2; // 最终目录
return [$save, $hash];
}
/*
* 读取伪静态路由文件
*/
function dr_get_rewrite_routes($uri) {
if (!$uri) {
return '';
}
if (SYS_301 || !SYS_URL_ONLY) {
// 自由参数或模糊匹配
list($uri, $query) = explode('?', $uri);
}
$uri = urldecode($uri);
// uri中存在分页参数,则替换为{page}
if (preg_match_all('/\d+/', $uri, $m, PREG_OFFSET_CAPTURE)) {
// 倒序数组
$nums = array_reverse($m[0]);
foreach ($nums as $p) {
list($save, $hash) = dr_rewrite_routes_path(str_replace($p[0], '{page}', $uri));
$file = $save . '/' . $hash . '.txt';
if (is_file($file)) {
return str_replace('{page}', $p[0], (string)file_get_contents($file));
}
}
}
list($save, $hash) = dr_rewrite_routes_path($uri);
if (!is_dir($save)) {
mkdir($save, 0755, true);
}
$file = $save . '/' . $hash . '.txt';
if (is_file($file)) {
return file_get_contents($file);
}
return '';
}
/*
* 储存伪静态路由文件
*/
function dr_save_rewrite_routes($uri, $routes) {
if (!$uri || !$routes) {
return '';
}
$uri = trim($uri, '/');
$uri = urldecode($uri);
$routes = urldecode($routes);
$uri = str_replace(['[page]', '%7Bpage%7D', '%5Bpage%5D', '%7bpage%7d', '%5bpage%5d'], '{page}', $uri);
$routes = str_replace(['[page]', '%7Bpage%7D', '%5Bpage%5D', '%7bpage%7d', '%5bpage%5d'], '{page}', $routes);
list($save, $hash) = dr_rewrite_routes_path($uri);
if (!is_dir($save)) {
mkdir($save, 0755, true);
}
file_put_contents($save . '/' . $hash . '.txt', $routes);
}
/*
* 删除伪静态路由文件
*/
function dr_del_rewrite_routes($uri) {
$uri = trim($uri, '/');
list($save, $hash) = dr_rewrite_routes_path($uri);
$file = $save . '/' . $hash . '.txt';
if (is_file($file)) {
@unlink($file);
}
return true;
}
/*
* 函数是否被启用
*/
if (!function_exists('locale_set_default')) {
function locale_set_default($a) { }
}
/*
* url后缀参数格式化
*/
function dr_url_safe_params($url) {
if (!$url) {
return $url;
}
// 移除所有非URL合法字符
$url = preg_replace('/[^a-zA-Z0-9\%:\/?#\[\]@!$&\'()*+,;=._~-]/', '', $url);
// 移除JavaScript事件处理器
$url = preg_replace('/on\w+\s*=/i', '', $url);
// 移除HTML标签
$url = strip_tags($url);
return $url;
}
/*
* 重写is_cli
*/
function is_cli(): bool {
if (stripos(PHP_SAPI, 'cli') !== false || defined('STDIN')) {
return true;
}
return false;
}
// 是否使用建站系统
define('IS_USE_CMS', is_file(dr_get_app_dir('cms').'/install.lock') ? dr_get_app_dir('cms') : '');
define('IS_USE_MODULE', IS_USE_CMS);
// 是否使用用户系统
define('IS_USE_MEMBER', is_file(dr_get_app_dir('member').'/install.lock') ? dr_get_app_dir('member') : '');
if (is_cli()) {
// CLI命令行模式
define('ADMIN_URL', 'http://localhost/');
define('FC_NOW_URL', 'http://localhost/');
define('FC_NOW_HOST', 'http://localhost/');
define('DOMAIN_NAME', 'http://localhost/');
define('WEB_DIR', '/');
if ($_SERVER["argv"]) {
foreach ($_SERVER["argv"] as $val) {
if (strpos($val, '=') !== false) {
list($name) = explode('=', $val);
$_GET[$name] = substr($val, strlen($name)+1);
}
}
}
} else {
// 正常访问模式
// 当前URL
$url = 'http';
if ((!IS_ADMIN && isset($system['SYS_HTTPS']) && $system['SYS_HTTPS'])
|| (defined('IS_HTTPS_FIX') && IS_HTTPS_FIX)
|| (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
|| (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443')
|| (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
|| (isset($_SERVER['HTTP_FROM_HTTPS']) && $_SERVER['HTTP_FROM_HTTPS'] == 'on')
|| (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) != 'off')
) {
$url.= 's';
}
$host = strtolower($_SERVER['HTTP_HOST']);
if (defined('IS_PORT_FIX') && IS_PORT_FIX && strpos($host, ':') === false) {
// 端口修复
$host.= ':'.IS_PORT_FIX;
} elseif (strpos($host, ':') !== false) {
list($nhost, $port) = explode(':', $host);
if ($port == 80) {
$host = $nhost; // 排除80端口
}
}
$url.= '://'.$host;
IS_ADMIN && define('ADMIN_URL', $url.'/'); // 优先定义后台域名
// url后缀参数
$end = ($_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] ? $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'] : $_SERVER['PHP_SELF']));
define('FC_NOW_URL', $url.dr_url_safe_params($end));
define('FC_NOW_HOST', $url.'/'); // 域名部分
define('DOMAIN_NAME', $host); // 当前域名
// 伪静态字符串
$uu = isset($_SERVER['HTTP_X_REWRITE_URL']) || trim($_SERVER['REQUEST_URI'], '/') == SELF ? trim($_SERVER['HTTP_X_REWRITE_URL'], '/') : ($_SERVER['REQUEST_URI'] ? trim($_SERVER['REQUEST_URI'], '/') : NULL);
if (defined('FIX_WEB_DIR') && FIX_WEB_DIR && strpos($uu, FIX_WEB_DIR) !== false && strpos($uu, FIX_WEB_DIR) === 0) {
$uu = trim(substr($uu, strlen(FIX_WEB_DIR)), '/');
define('WEB_DIR', '/'.trim(FIX_WEB_DIR, '/').'/');
} else {
define('WEB_DIR', '/');
}
// 当前URI
$uri = dr_get_rewrite_uri($uu);
define('CMSURI', $uri);
// 根据自定义URL规则来识别路由
if (!IS_ADMIN && CMSURI && !defined('IS_API') && !defined('FIX_WEB_URL')) {
// 读取伪静态路由文件
$rcache = dr_get_rewrite_routes(CMSURI);
if ($rcache) {
$routes = [
CMSURI => $rcache,
];
} else {
// 自定义URL解析规则
$routes = [];
$routes['index\.html(.*)'] = 'index.php?c=home&m=index';
$routes['404\.html(.*)'] = 'index.php?&c=home&m=s404&uri='.CMSURI;
$routes['cms-license(.*)'] = 'index.php?s=api&c=rewrite&m=license';
$routes['rewrite-test.html(.*)'] = 'index.php?s=api&c=rewrite&m=test';
if (is_file(WEBPATH.'config/rewrite.php')) {
$my = require WEBPATH.'config/rewrite.php';
if ($my && is_array($my)) {
$routes = array_merge($routes, $my);
}
} elseif (is_file(CONFIGPATH.'rewrite.php')) {
$my = require CONFIGPATH.'rewrite.php';
if ($my && is_array($my)) {
$routes = array_merge($routes, $my);
}
}
}
// 正则匹配路由规则
$is_404 = 1;
foreach ($routes as $key => $val) {
$rewrite = $match = []; //(defined('SYS_URL_PREG') && SYS_URL_PREG ? '' : '$')
if ($key == CMSURI || preg_match('/^'.$key.'$/U', CMSURI, $match)) {
unset($match[0]);
// 开始匹配
$is_404 = 0;
// 开始解析路由 URL参数模式
$_GET = [];
$queryParts = explode('&', str_replace(['index.php?', '/index.php?'], '', $val));
if ($queryParts) {
foreach ($queryParts as $param) {
$item = explode('=', $param);
$_GET[$item[0]] = $item[1];
if (strpos($item[1], '$') !== FALSE) {
$id = (int)substr($item[1], 1);
$_GET[$item[0]] = isset($match[$id]) ? $match[$id] : $item[1];
}
}
}
!$_GET['c'] && $_GET['c'] = 'home';
!$_GET['m'] && $_GET['m'] = 'index';
// 结束匹配
break;
}
}
// 说明是404
if ($is_404) {
$_GET['s'] = '';
$_GET['c'] = 'home';
$_GET['m'] = 's404';
$_GET['uri'] = CMSURI;
}
}
// 自定义路由模式
if (is_file(WEBPATH.'config/router.php')) {
require WEBPATH.'config/router.php';
} elseif (is_file(CONFIGPATH.'router.php')) {
require CONFIGPATH.'router.php';
}
}
!defined('CMSURI') && define('CMSURI', '');
// API接口项目标识 放到后面是为了识别api 的伪静态
!defined('IS_API') && define('IS_API', isset($_GET['s']) && $_GET['s'] == 'api');
// 解析自定义域名
if (!IS_API && $_GET['s'] != 'api' && is_file(WRITEPATH.'config/domain_app.php')){
$domain = require WRITEPATH.'config/domain_app.php';
// 强制定义为模块
if (isset($domain[DOMAIN_NAME]) && $domain[DOMAIN_NAME] && is_dir(APPSPATH.ucfirst($domain[DOMAIN_NAME]))) {
$_GET['s'] = $domain[DOMAIN_NAME];
}
unset($domain);
}
// 自定义入口执行
if (function_exists('cms_init')) {
cms_init();
}
// 判断自定义首页入口
if (defined('CMSURI')
&& !CMSURI && !IS_ADMIN
&& !IS_API && !isset($_GET['s'])
&& is_file(WRITEPATH.'index.lock')
) {
$index = file_get_contents(WRITEPATH.'index.lock');
if ($index) {
list($a, $b, $c) = explode('/', trim($index));
if ($a && dr_is_app_dir($a) && $b && $c) {
$_GET['s'] = $a;
$_GET['c'] = trim($b);
$_GET['m'] = trim($c);
}
}
}
if (IS_USE_CMS && isset($_GET['s']) && $_GET['s'] == 'module') {
$_GET['s'] = 'cms';
}
// 判断s参数,“应用程序”文件夹目录
if (!IS_API && isset($_GET['s']) && preg_match('/^[a-z_]+$/i', $_GET['s'])) {
// 判断会员模块,排除后台调用
$dir = ucfirst($_GET['s']);
if (!IS_ADMIN && $dir == 'Member') {
// 用户系统
if (!IS_USE_MEMBER) {
dr_show_error('用户系统插件未安装', '无权限使用用户系统');
}
if ($_GET['app'] && dr_is_app_dir($_GET['app'])) {
// 模块应用
define('APPPATH', dr_get_app_dir($_GET['app']));
define('APP_DIR', strtolower($_GET['app'])); // 应用目录名称
} else {
// 表示会员模块
define('APPPATH', IS_USE_MEMBER);
define('APP_DIR', 'member'); // 模块目录名称
}
define('IS_MEMBER', TRUE);
} elseif (dr_is_app_dir($dir)) {
// 模块应用
define('APPPATH', dr_get_app_dir($dir));
define('APP_DIR', strtolower($dir)); // 应用目录名称
define('IS_MEMBER', FALSE);
} else {
// 不存在的应用
dr_show_error('应用程序('.dr_get_app_dir($dir).')不存在', '应用程序('.strtolower($dir).')不存在');
}
} else {
// 系统主目录
!defined('APPPATH') && define('APPPATH', FRAMEPATH);
!defined('APP_DIR') && define('APP_DIR', '');
define('IS_MEMBER', FALSE);
}
// 是否前端
define('IS_HOME', !IS_ADMIN && !IS_MEMBER);
// 系统函数库
require CMSPATH.'Core/Helper.php';
// 进入系统框架加载
require FRAMEPATH.'Init.php';