开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 70

PHP后端/FoxCMS黔狐内容管理系统

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (2)
标签 (3)
master
v1.21dev
V1.2.6
V1.2.5
v1.2
master
分支 (2)
标签 (3)
master
v1.21dev
V1.2.6
V1.2.5
v1.2
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (2)
标签 (3)
master
v1.21dev
V1.2.6
V1.2.5
v1.2
foxcms
/
admin.php
foxcms
/
admin.php
admin.php 5.49 KB
一键复制 编辑 原始数据 按行查看 历史
码手lion 提交于 2026年05月12日 17:53 +08:00 . 前后台入口文件分离
<?php
/*
* @Descripttion : QianFox让数字化营销更简单
* @Author : QianFox Team
* @Date : 2026年05月12日 00:18:36
* @Version : V1.24
* @Copyright : ©2021-现在 贵州黔狐科技股份有限公司 版权所有
* @LastEditors : QianFox Team
* @LastEditTime : 2026年05月12日 16:17:53
*/
// [ 后台独立入口文件 ]
namespace think;
if (version_compare(PHP_VERSION, '7.1', '<') || version_compare(PHP_VERSION, '8.0', '>=')) {
$vinfo = require_once('./data/update/version/info.php');
$pve = require_once('./static/warn/php_version_error.html');
echo $pve;
exit();
}
define('INSTALL_PATH', str_replace('\\', '/', dirname(__FILE__)));
if (file_exists(INSTALL_PATH . "/install/") && !is_file(INSTALL_PATH . '/install/install.lock')) {
header('Location:/install/index.php');
exit();
}
$base = require('./config/cfg/base.php');
$adminconfig = require('./config/adminconfig.php');
try {
require __DIR__ . '/vendor/autoload.php';
} catch (\Throwable $e) {
if ($base['frame_exception'] == '0') {
$pve = require_once('./static/warn/php_version_error.html');
echo $pve;
exit();
}
}
// 引入验证文件
require_once __DIR__ . '/app/validate/BaseValidate.php';
// 实例化 BaseValidate 类
$validator = new \app\validate\BaseValidate();
// 全局参数验证
$validator->validateGetParams();
$validator->validateCookieParams();
$validator->validatePostData();
// 全局Referer 头验证
$_SERVER['HTTP_REFERER'] = $validator->validateReferer() ?? '';
// 获取当前入口文件名,用于URL生成
$currentScript = basename($_SERVER['SCRIPT_NAME'], '.php');
$adminPath = $adminconfig['admin_path'] ?? $currentScript;
$adminRoot = '/' . $adminPath . '.php';
// 执行HTTP应用并响应 - 直接运行admin应用
$http = (new App())->http;
define("RUNTIME", __DIR__);
// 配置URL生成,根据URI动态确定应用
$applyInfo = getApplyInfo();
// 手动创建并配置 Request 对象
$refHttp = new \ReflectionClass($http);
$propApp = $refHttp->getProperty('app');
$propApp->setAccessible(true);
$app = $propApp->getValue($http);
$request = $app->make('request', [], true);
// 使用反射设置 protected 属性 baseFile
$ref = new \ReflectionClass($request);
$prop = $ref->getProperty('baseFile');
$prop->setAccessible(true);
$prop->setValue($request, $adminRoot);
$prop->setAccessible(false);
if ($applyInfo['is_apply']) {
// 如果是插件应用,指定正确的应用名
$http->name($applyInfo['app_name']);
// 手动设置 pathinfo,确保正确解析 URL
// 注意:当应用名被设置后,pathinfo 不应该包含应用名部分
// 因为多应用模式下应用名已经从 URL 中提取出来了
$uri = $_SERVER["REQUEST_URI"];
$uri = strtok($uri, '?');
$scriptName = basename($_SERVER['SCRIPT_NAME'], '.php');
$uriArr = explode("/", $uri);
// 找到入口文件在uri中的位置
$entryIndex = null;
foreach ($uriArr as $key => $segment) {
if ($segment === ($scriptName . '.php')) {
$entryIndex = $key;
break;
}
}
// 从入口文件后提取完整路径,并移除应用名部分
if ($entryIndex !== null) {
$pathParts = array_slice($uriArr, $entryIndex + 1);
// 第一部分是应用名,需要跳过
if (count($pathParts) > 1) {
$pathParts = array_slice($pathParts, 1);
} else {
$pathParts = [];
}
$pathinfo = implode('/', $pathParts);
// 设置 pathinfo 属性(不包含应用名)
$propPathinfo = $ref->getProperty('pathinfo');
$propPathinfo->setAccessible(true);
$propPathinfo->setValue($request, $pathinfo);
$propPathinfo->setAccessible(false);
// 同时设置 $_SERVER['PATH_INFO'] 以防框架从环境变量中获取
$_SERVER['PATH_INFO'] = '/' . $pathinfo;
}
$response = $http->run($request);
} else {
// 非插件应用,运行admin
$http->name('admin');
$response = $http->run($request);
}
$response->send();
$http->end($response);
/**
* 获取应用信息
* @return array ['is_apply' => bool, 'app_name' => string]
*/
function getApplyInfo()
{
$uri = $_SERVER["REQUEST_URI"];
// 去掉查询参数
$uri = strtok($uri, '?');
$adminconfig = require('./config/adminconfig.php');
$applys = require('./config/cfg/apply.php');
$uriArr = explode("/", $uri);
$scriptName = basename($_SERVER['SCRIPT_NAME'], '.php');
// 找到入口文件在uri中的位置
$entryIndex = null;
foreach ($uriArr as $key => $segment) {
if ($segment === ($scriptName . '.php')) {
$entryIndex = $key;
break;
}
}
// 从入口文件后获取应用名
if ($entryIndex !== null && isset($uriArr[$entryIndex + 1])) {
$app_name = $uriArr[$entryIndex + 1];
} else {
$app_name = $uriArr[1] ?? null;
}
if (!$app_name) {
return ['is_apply' => false, 'app_name' => null];
}
// 检查是否是后台管理应用(使用admin_path配置)
if ($adminconfig["admin_path"] == $app_name) {
return ['is_apply' => false, 'app_name' => 'admin'];
}
// 检查是否是插件应用
foreach ($applys as $apply) {
if ($apply == $app_name) {
return ['is_apply' => true, 'app_name' => $app_name];
}
}
return ['is_apply' => false, 'app_name' => null];
}
/**
* 判断应用(兼容旧代码)
* @return bool
*/
function isApply()
{
return getApplyInfo()['is_apply'];
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

🔥FoxCMS是一套可免费商用开源的内容管理系统,采用PHP+MySQL架构。内置企业常用的内容模型,如单页、文章、产品、图集、视频、反馈、下载等,并配备丰富的模板标签及强大的SEO和伪静态优化机制。无需复杂编程技能,仅需掌握HTML即可快速构建出多元化的应用场景,实现内容的高效管理。系统支持多语言、表单设计、访客统计、消息通知、云存储服务等,更多应用插件持续上架中,欢迎大家提出宝贵意见和建议。
暂无标签
GPL-3.0
使用 GPL-3.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/php-backend-base/foxcms.git
git@gitee.com:php-backend-base/foxcms.git
php-backend-base
foxcms
FoxCMS黔狐内容管理系统
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /