Discuz core

出自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) {
		......
	}
}
个人工具