`

Discuz core class 解释

    博客分类:
  • PHP
阅读更多
discuz 核心类 注释说明
class discuz_core {

	// 数据库存储引擎
	var $db = null;

	// 内存缓冲object
	var $mem = null;

	// 会话 object
	var $session = null;

	// 程序配置
	var $config = array();

	// $_G 数组的映射
	var $var = array();

	// 加载缓存的数组
	var $cachelist = array();

	// 是否初始化
	var $init_setting = true;
	var $init_user = true;
	var $init_session = true;
	var $init_cron = true;
	var $init_misc = true;
	var $init_memory = true;
	var $init_mobile = true;

	// 是否已经初始化
	var $initated = false;

	// 列举全局变量,为清理做准备
	var $superglobal = array(
		'GLOBALS' => 1,
		'_GET' => 1,
		'_POST' => 1,
		'_REQUEST' => 1,
		'_COOKIE' => 1,
		'_SERVER' => 1,
		'_ENV' => 1,
		'_FILES' => 1,
	);

	/**
	 * 建立唯一进程
	 * @staticvar discuz_core $object
	 * @return discuz_core
	 */
	function &instance() {
		......
	}

	/**
	 * 预处理的调用
	 */
	function discuz_core() {
		$this->_init_env();
		$this->_init_config();
		$this->_init_input();
		$this->_init_output();
	}

	/**
	 * 核心初始化
	 */
	function init() {
		if(!$this->initated) {
			$this->_init_db();
			$this->_init_memory();
			$this->_init_user();
			$this->_init_session();
			$this->_init_setting();
			$this->_init_mobile();
			$this->_init_cron();
			$this->_init_misc();
		}
		$this->initated = true;
	}

	/**
	 * 定义PHP环境信息常量和全局变量 $_G
	 *
	*/
	function _init_env() {
		......
	}

	/**
	 * 禁止对全局变量注入
	 * slashes 处理
	 * cookie 处理(去掉cookie前缀)
	 * 将 $_GET 与 $_POST 合并
	 *
	*/
	function _init_input() {
		......
	}

	/**
	 * 加载配置文件
	 *
	*/
	function _init_config() {
		......
	}

	/**
	 * 输出处理
	 * GET 参数跨站检测
	 * 防页面刷新
	 * gzip处理
	 * 字符集处理
	 *
	*/
	function _init_output() {
		......
	}

	/**
	 * 禁止机器人访问
	 *
	*/
	function reject_robot() {
		......
	}

	/**
	 * GET 参数跨站检测
	 *
	 * 2011-3-8 增加对 CONTENT-TRANSFER-ENCODING 代码的检测 (IE MHTML 漏洞)
	 */
	function _xss_check() {
		......
	}

	/**
	 * 获取客户端IP
	 *
	 */
	function _get_client_ip() {
		......
	}

	/**
	 * 初始化数据库类,同时选择主从数据库
	 *
	 */
	function _init_db() {
		......
	}

	/**
	 * 初始化session
	 *
	 */
	function _init_session() {
		......
	}

	/**
	 * 处理当前用户信息
	 *
	 */
	function _init_user() {
		......
	}

	/**
	 * 设置当前用户为游客
	 *
	 */
	function _init_guest() {
		......
	}

	/**
	 * 处理计划任务
	 *
	 */
	function _init_cron() {
		......
	}

	/**
	 * 杂项
	 * 调入核心语言包
	 * 处理全局时区设置
	 * 处理被封禁用户
	 * 站点开关检查
	 * 手机端控制每页显示主题数和回帖数
	 * 判断并执行每日登录奖励积分
	 *
	*/
	function _init_misc() {
		......
	}

	/**
	 * 加载全局设置 setting,风格 style,下一个任务 cronnextrun
	 *
	*/
	function _init_setting() {
		......
	}

	/**
	 * 处理当前界面风格
	 * 定义风格常量
	 *
	*/
	function _init_style() {
		......
	}

	/**
	 * 初始化Discuz 内存读写引擎
	 *
	*/
	function _init_memory() {
		......
	}

	/**
	* 手机访问时的开关判断,浏览器判断和相关特性
	*
	*/
	function _init_mobile() {
		......
	}

	/**
	* 设置时区
	* @param $timeoffset - 时区数值
	* @return 无
	*/
	function timezone_set($timeoffset = 0) {
		......
	}

	/**
	* 手机转码的$_POST多层数组递归转码
	* @param $value - 字符串
	* @return 返回转义好的字符串
	*/
	function mobile_iconv_recurrence($value) {
		......
	}
}

 

分享到:
评论

相关推荐

    discuz论坛源代码

    4. **核心类库(Core Class Library)**:包括各种功能模块,如用户认证、帖子管理、缓存处理等,位于`class`目录中。 5. **插件与模块(Plugins & Modules)**:允许开发者扩展Discuz功能,位于`source/plugin`和`...

    Discuz插件制作教程

    ### Discuz插件制作教程知识点详解 #### 一、Discuz插件机制概览 - **定义**:Discuz插件机制是指Discuz系统中一套完整且灵活的扩展功能实现方式,它允许开发者通过编写特定的插件代码来增强或定制Discuz的功能,...

    Discuz X3核心文件解析

    针对PHP初学者,在入口文件class_core.php后的核心文件discuz_application.php解析,

    自己学习总结的discuz x2笔记

    接下来是引入核心类库`class_core.php`,这是Discuz X2框架的核心,提供了基础的类和函数支持。然后通过`discuz_core::instance()`获取到Discuz核心对象实例,用于后续的业务逻辑处理。 在`new.php`中还定义了一个`...

    基于PHP的Discuz!X3.4繁体中文BIG520231001源码.zip

    的核心函数和类,如`class_core.php`,负责处理论坛的大部分逻辑。 3. **模板文件**:定义了论坛的前端界面,如`template`目录下的不同主题模板。 4. **语言包**:`language`目录包含了多种语言的支持,其中会有...

    Discuz!_X2笔记.pdf

    - **source/class/class_core.php**:核心类文件,实现了单例模式,用于加载核心类。 - **source/function/function_core.php**:核心函数文件,在加载核心类时会自动加载。 - **source/function/function_cache.php...

    discuz调用函数实现同步登录与退出核心代码

    1. 引入discuz系统的核心文件`class_core.php`,这个文件是discuz系统的核心框架文件,它定义了系统运行的基本框架和流程。 2. 通过调用`discuz_core::instance()`方法获取discuz系统实例对象`$discuz`,这是操作...

    House_1.0Beta3_GBK.zip

    $discuz = & discuz_core::instance(); $modidentifier = 'house'; $modurl = 'house.php'; $cachelist = array('category_sortlist_'.$modidentifier, 'category_arealist_'.$modidentifier, 'category_...

    DX1.5 手机正式版

    $discuz = & discuz_core::instance();//实例化 使用此种方法是为了兼容PHP4 与PHP5 复制代码 这里我们进到./source/class/class_core.php 看看这个核心类 首先来分别看看这些属性 var $db = null;//存储数据库对象 ...

    Discuzx2 开发标准流程笔记

    1. newModule.php首先加载核心类文件/source/class/class_core.php。这是核心类文件,初始化了整个Discuz! X2的核心对象$discuz,并且运用了单例模式来确保系统中只有一个该核心对象实例。$discuz对象包含若干重要...

    web应用漏洞.docx

    3. Discuz X2.5 /source/class/class_image.php 命令执行漏洞:攻击者可以通过该漏洞执行任意命令。 4. Drupal SA-CORE-2018-002 远程代码执行漏洞:攻击者可以通过该漏洞执行任意代码。 5. ECShop user.php 代码...

    方维分享系统模板说明(最新)

    以下是对方维分享系统各个重要组件的详细解释: 1. **UCENTER 整合**: 在描述中提到,分享系统与DISCUZ 2.5会员的整合是关键步骤。首先,需要升级替换分享系统中的UC文件至1.6版本。接着,在分享系统的后台管理中...

    phpems6.1测试版(20200322).zip

    修改方法:打开论坛的 source/class/discuz/discuz_application.php文件,找到350行_xss_check函数,将368-372的foreach注释掉。 4、DZ3.1与PE1.21整合 和第一种方法一样,就是进行第二步对PE1.21进行修改,进行...

    shopex 二次开发实战指南(罕见教程

    class mdl_warehouse extends shopObject { public $idColumn = "id"; public $adminCtl = "goods/brand"; public $textColumn = "name,information,data0"; public $defaultCols = "id,name,information,data...

    深入理解PHP类的自动载入机制

    例如,Discuz会检查`spl_autoload_register`函数是否存在,如果存在,则注册自己的`core::autoload`作为自动加载函数;如果不存在,则重写`__autoload()`,使其调用`core::autoload`。这种做法确保了在所有PHP版本...

Global site tag (gtag.js) - Google Analytics