common.inc.php
來源:互聯網
上載者:User
define('PHPCMS_ROOT', str_replace("\\", '/', substr(dirname(__FILE__), 0, -7))); //定義根目錄
define('MICROTIME_START', microtime()); //設定起始時間
define('IN_PHPCMS', TRUE); //網站入口判斷變數
define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc()); //設定魔法字會轉換開關
define('TIME', time()); //產生時間
set_include_path(PHPCMS_ROOT.'include/'); //負載檔案目錄
set_magic_quotes_runtime(0); //設定魔法字已耗用時間開關,0 為關
unset($LANG, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS);//清空變數
require 'config.inc.php'; //核心設定檔
require 'global.func.php'; //全域功能函數
require 'dir.func.php'; //目錄函式操作功能函數
require 'url.func.php'; //url相關操作函數
require 'output.class.php'; //資料輸出相關函數
require 'priv_group.class.php'; //組權限類別
require 'times.class.php'; //時間處理類
require PHPCMS_ROOT.'languages/'.LANG.'/phpcms.lang.php'; //載入語言函數包
ERRORLOG ? set_error_handler('phpcms_error') : error_reporting(E_ERROR | E_WARNING | E_PARSE); //設定錯誤處理機智
define('IP', ip());
define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
define('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : preg_replace("/(.*)\.php(.*)/i", "http://www.cnblogs.com/igaofen/admin/file://1.php/", $_SERVER['PHP_SELF']));
define('QUERY_STRING', $_SERVER['QUERY_STRING']);
define('PATH_INFO', isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '');
define('DOMAIN', isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : preg_replace("/([^:]*)[:0-9]*/i", "http://www.cnblogs.com/igaofen/admin/file://0.0.0.1/", $_SERVER['HTTP_HOST']));
define('SCHEME', $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://');
define('SITE_URL', SCHEME.$_SERVER['HTTP_HOST'].PHPCMS_PATH);
define('RELATE_URL', isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : SCRIPT_NAME.(QUERY_STRING ? '?'.QUERY_STRING : PATH_INFO));
define('URL', SCHEME.$_SERVER['HTTP_HOST'].RELATE_URL);
define('RELATE_REFERER',urlencode(RELATE_URL));
//定義一系列與伺服器相關的變數,為後面的產生cache相關參數作準備
if(function_exists('date_default_timezone_set')) date_default_timezone_set(TIMEZONE);//設定time等函數的預設時區
header('Content-type: text/html; charset='.CHARSET); //設定字元集
if(CACHE_PAGE && !defined('IN_ADMIN')) cache_page_start(); //看是否調用頁面緩衝
if(GZIP && extension_loaded('zlib')) ini_set('zlib.output_compression', 'On'); //是否gzip最佳化
ob_start(); //緩衝開始,啟動ob_start 輸出部份轉的緩衝,flush後,全部輸出
$dbclass = 'db_'.DB_DATABASE; //產生db.class的名字
require $dbclass.'.class.php'; //載入db的資料庫類檔案
$db = new $dbclass; //執行個體發資料庫
$db->connect(DB_HOST, DB_USER, DB_PW, DB_NAME, DB_PCONNECT, DB_CHARSET); //串連資料庫
require 'session_'.SESSION_STORAGE.'.class.php'; //載入session類
$session = new session(); //初始化session
session_set_cookie_params(0, COOKIE_PATH, COOKIE_DOMAIN); //設定cookies
if($_REQUEST) //轉義request的變數
{
if(MAGIC_QUOTES_GPC)
{
$_REQUEST = new_stripslashes($_REQUEST);
if($_COOKIE) $_COOKIE = new_stripslashes($_COOKIE);
}
if(!defined('IN_ADMIN')) $_REQUEST = filter_xss($_REQUEST, ALLOWED_HTMLTAGS);
extract($db->escape($_REQUEST), EXTR_SKIP);
if($_COOKIE) $db->escape($_COOKIE);
}
if(QUERY_STRING && strpos(QUERY_STRING, '=') === false && preg_match("/^(.*)\.(htm|html|shtm|shtml)$/", QUERY_STRING, $urlvar))
{
parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1]));
}
$CACHE = cache_read('common.php'); //讀cache,comman.php產生了一些網站初始的變數,比如欄目名,等,可到data/cahce/下查看
if(!$CACHE)
{
require_once 'cache.func.php';
cache_all();
$CACHE = cache_read('common.php');
}
extract($CACHE); //將數組轉成變數
unset($CACHE); //銷毀變數
if($PHPCMS['enable_ipbanned'] && ip_banned(IP)) showmessage($LANG['administrator_banned_this_IP']);//IP地址限制
if(!defined('IN_ADMIN')) ////非法資訊屏蔽作用範圍(0 禁用,1 前台,2 全站)
{
if(FILTER_ENABLE && filter_word()) showmessage('The content including illegal information: '.ILLEGAL_WORD.' .');
if($PHPCMS['minrefreshtime'])
{
$cc = new times();
$cc->set('cc', $PHPCMS['minrefreshtime'], 1);
if($cc->check()) showmessage('Do not refresh the page in '.$PHPCMS['minrefreshtime'].' seconds!');
$cc->add();
unset($cc);
}
if(!isset($forward)) $forward = HTTP_REFERER;
}
$M = $TEMP = array();
if(!isset($mod)) $mod = 'phpcms'; //設定模組,如果什麼也沒有設,就用phpcms
if($mod != 'phpcms') //如果有設定,調用相關模組的資訊,並讀取他們產生的cahce
{
isset($MODULE[$mod]) or exit($LANG['module_not_exists']);
$langfile = defined('IN_ADMIN') ? $mod.'_admin' : $mod;
@include PHPCMS_ROOT.'languages/'.LANG.'/'.$langfile.'.lang.php';
$M = cache_read('module_'.$mod.'.php');
}
$_userid = 0;
$_username = '';
$_groupid = 3;
$phpcms_auth = get_cookie('auth'); //判斷是否以前登陸過,並調取認證資訊,許可權判斷
if($phpcms_auth)
{
$auth_key = md5(AUTH_KEY.$_SERVER['HTTP_USER_AGENT']);
list($_userid, $_password) = explode("\t", phpcms_auth($phpcms_auth, 'DECODE', $auth_key));
$_userid = intval($_userid);
$sql_member = "SELECT * FROM `".DB_PRE."member_cache` WHERE `userid`=$_userid";
$r = $db->get_one($sql_member);
if(!$r && cache_member())
{
$r = $db->get_one($sql_member);
}
if($r && $r['password'] === $_password)
{
if($r['groupid'] == 2)
{
set_cookie('auth', '');
showmessage($LANG['userid_banned_by_administrator']);
}
@extract($r, EXTR_PREFIX_ALL, '');
}
else
{
$_userid = 0;
$_username = '';
$_groupid = 3;
set_cookie('auth', '');
}
unset($r, $phpcms_auth, $phpcms_auth_key, $_password, $sql_member);
}
$G = cache_read('member_group_'.$_groupid.'.php'); //讀會員的組資訊
$priv_group = new priv_group(); //初始化組使用者資訊
define('SKIN_PATH', 'templates/'.TPL_NAME.'/skins/'.TPL_CSS.'/'); //載入模板的css檔案
define('PASSPORT_ENABLE', ($PHPCMS['uc'] || $PHPCMS['enablepassport'] || $PHPCMS['enableserverpassport']) ? 1 : 0); //設定uc,等其它密碼通行證,開關
?>
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/guwenzhong/archive/2009/03/05/3959500.aspx