ip.inc.php,phpcms/~common.inc.php文件解析

$magic_quotes_gpc = get_magic_quotes_gpc();

if(!$magic_quotes_gpc)

{

$_POST = new_addslashes($_POST);

$_GET = new_addslashes($_GET);

}

@extract($_POST, EXTR_OVERWRITE);

@extract($_GET, EXTR_OVERWRITE);

unset($_POST, $_GET);

/*//JL:处理结束*/

require PHPCMS_ROOT.'/config.inc.php';//JL:网站基本设置,包括数据库参数,缓存参数,语言,风格,日志等参数

require PHPCMS_ROOT.'/languages/'.$CONFIG['language'].'/phpcms.lang.php';//JL:网站自定义响应语言

define('PHPCMS_PATH', $CONFIG['rootpath']);//JL:网站相对路径,在URL里用到

define('PHPCMS_CACHEDIR', $CONFIG['cachedir']);//JL:所有$CONFIG可以在config.inc.php中找到

$CONFIG['enablephplog'] ? set_error_handler('phpcms_error') : error_reporting(E_ERROR | E_WARNING | E_PARSE);//JL:错误日志的启用,自定义错误处理函数(之前调试的时候发现一个错误,在启用的状态如果出错了,会导致后面会话头部出问题)

if(function_exists('date_default_timezone_set')) date_default_timezone_set($CONFIG['timezone']);

header('Content-type: text/html; charset='.$CONFIG['charset']);

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))

{

$PHP_IP = getenv('HTTP_CLIENT_IP');

}

elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))

{

$PHP_IP = getenv('HTTP_X_FORWARDED_FOR');

}

elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))

{

$PHP_IP = getenv('REMOTE_ADDR');

}

elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))

{

$PHP_IP = $_SERVER['REMOTE_ADDR'];

}

preg_match("/[\d\.]{7,15}/", $PHP_IP, $ipmatches);

$PHP_IP = $ipmatches[0] ? $ipmatches[0] : 'unknown';//JL:客户端IP

$PHP_TIME = time();

$PHP_SELF = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : (isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : $_SERVER['ORIG_PATH_INFO']);

$PHP_QUERYSTRING = $_SERVER['QUERY_STRING'];

$PHP_DOMAIN = $_SERVER['SERVER_NAME'];

$PHP_REFERER = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

$PHP_SCHEME = $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';

$PHP_PORT = $_SERVER['SERVER_PORT'] == '80' ? '' : ':'.$_SERVER['SERVER_PORT'];

$PHP_SITEURL = $PHP_SCHEME.$PHP_DOMAIN.$PHP_PORT.PHPCMS_PATH;//JL:相当于主页地址

$PHP_URL = $PHP_SCHEME.$PHP_DOMAIN.$PHP_PORT.$PHP_SELF.($PHP_QUERYSTRING ? '?'.$PHP_QUERYSTRING : '');//JL:完整url

$db_file = $db_class = 'db_'.$CONFIG['database'];//JL:这里db_class是db_mysql

if(!defined('IN_ADMIN'))//JL:前台根据dbiscache判断,后台不采用数据库缓存

{

if($CONFIG['dbiscache']) $db_file .= '_cache';//JL:如果启用cache,则引用的类将是db_mysql_cache.class.php

if($CONFIG['phpcache'] == '2')//JL:缓冲功能的总开关,也是针对前台

{

$cachefileid = md5($PHP_SELF.'?'.$PHP_QUERYSTRING);

$cachefiledir = PHPCMS_ROOT.'/data/phpcache/'.substr($cachefileid, 0, 2).'/';

$cachefile = $cachefiledir.$cachefileid.'.html';//JL:缓存文件,还没搞清怎么生成的,

if(file_exists($cachefile) && ($PHP_TIME < @filemtime($cachefile) + $CONFIG['phpcacheexpires']))

{

require $cachefile;

exit;

}

}

if($PHP_QUERYSTRING && preg_match("/^(.*)\.(htm|html|shtm|shtml)$/", $PHP_QUERYSTRING, $urlvar))//JL:解析类似:的URL

{

parse_str(str_replace(array('/', '-', ' '), array('&', '=', ''), $urlvar[1]));//JL:解析为独立变量,奇怪的是如何和上面的请求解析结合?

}

}

require PHPCMS_ROOT.'/include/'.$db_file.'.class.php';

require PHPCMS_ROOT.'/include/tag.func.php';

require PHPCMS_ROOT.'/include/extension.inc.php';//JL:扩展文件

if( PHPCMS_ROOT.'/include/session_'.$CONFIG['database'].'.class.php')//JL:将会话与数据库交互的类

{

if($CONFIG['sessionsavepath']) session_save_path($CONFIG['sessionsavepath']);//JL:会话保存路径

session_start();

}

$db = new $db_class;

$db->connect($CONFIG['dbhost'], $CONFIG['dbuser'], $CONFIG['dbpw'], $CONFIG['dbname'], $CONFIG['pconnect']);

$db->iscache = $CONFIG['dbiscache'];

$db->expires = $CONFIG['dbexpires'];

if(!cache_read('table.php'))//JL:读取缓存目录/data/cache/table.php文件(主要是数据库表名,提供给其他cache函数用于生成相应的缓存文件如:cache_module,cache_channel)

{

require_once PHPCMS_ROOT.'/include/cache.func.php';

cache_all();//JL:生成所有的缓存文件

}

$CACHE = cache_read('common.php');//JL:common.php中返回四个数组分别是下面内容 (假设table.php缓存文件存在但common.php文件不存在的情况,岂不是要出错!)

$MODULE = $CACHE['module'];

$CHANNEL = $CACHE['channel'];

$PHPCMS = $CACHE['phpcms'];

$FIELD = $CACHE['field'];

unset($CACHE, $ipmatches, $CONFIG['timezone'], $CONFIG['cachedir'], $CONFIG['dbhost'], $CONFIG['dbuser'], $CONFIG['dbpw'], $CONFIG['pconnect'], $CONFIG['dbiscache'], $CONFIG['dbexpires']);

if($PHPCMS['enablebanip'] && ip_banned($PHP_IP)) showmessage($LANG['administrator_banned_this_IP']);//JL:ip_banned和showmessage在global.func.php中定义 是否禁止ip访问

$TEMP = $MOD = $CHA = $CATEGORY = $CAT = array();

$ftp = $enableftp = $tags = $html = 0;

if(!isset($mod))

{

$mod = 'phpcms';

}

elseif($mod != 'phpcms')

{

isset($MODULE[$mod]) or exit($LANG['module_not_exists']);

$MOD = cache_read($mod.'_setting.php');//JL:读取模块的设置

@include PHPCMS_ROOT.'/languages/'.(defined('IN_ADMIN') ? $CONFIG['adminlanguage'].'/'.$mod.'_admin.lang.php' : $CONFIG['language'].'/'.$mod.'.lang.php');

}

if(!isset($forward)) $forward = $PHP_REFERER;

$dosubmit = isset($dosubmit) ? 1 : 0;

$channelid = isset($channelid) ? intval($channelid) : 0;

$skindir = PHPCMS_PATH.'templates/'.$CONFIG['defaulttemplate'].'/skins/'.$CONFIG['defaultskin'];

/*//JL:如果用户在后台开启了压缩传输。而用户又开启了页面缓存。那么就默认不使用压缩传输了。*/

if($PHPCMS['enablegzip'] && function_exists('ob_gzhandler'))

{

($CONFIG['phpcache'] || defined('SHOWJS')) ? ob_start() : ob_start('ob_gzhandler');//JL:ob_start('ob_gzhandler')表示压缩传输

}

else

{

$PHPCMS['enablegzip'] = 0;

ob_start();

}

$_userid = 0;

$_username = '';

$_groupid = 3;

$_arrgroupid = array();

$phpcms_auth = getcookie('auth');

if($phpcms_auth)//JL:通过cookie方式验证用户登陆

{

$phpcms_auth_key = md5($PHPCMS['authkey'].$_SERVER['HTTP_USER_AGENT']);//JL:密钥

list($_userid, $_password, $_answer) = $phpcms_auth ? explode("\t", phpcms_auth($phpcms_auth, 'DECODE')) : array(0, '', '');//JL:解密函数phpcms_auth

$_userid = intval($_userid);

if($_userid < 0) $_userid = 0;

if($_userid)

{

$memberinfo = $db->get_one("SELECT username,password,groupid,arrgroupid,email,chargetype,begindate,enddate,money,point,credit,newmessages FROM ".TABLE_MEMBER." WHERE userid=$_userid LIMIT 0,1");//Jl:表名用已定义的常量代替,方便出现更改数据库表名的情况

if($memberinfo && $memberinfo['password'] == $_password)//JL:解密后进行数据库记录对比判断

{

if($memberinfo['groupid'] == 2)

{

mkcookie('auth', '');

showmessage($LANG['userid_banned_by_administrator']);

}

@extract($memberinfo, EXTR_PREFIX_ALL, '');//JL:解析为独立变量,但前面加了一个"_"的符号

unset($memberinfo, $_password, $_answer);

$_arrgroupid = $_arrgroupid ? array_filter(explode(',', $_arrgroupid)) : array(); //JL:没有提供 callback 函数,array_filter() 将删除参数中所有等值为 FALSE 的条目

}

else

{

mkcookie('auth', '');

}

}

}

if(isset($page)) $page = max(intval($page), 1);//JL:页码初始化

unset($db_class, $db_file, $phpcms_auth, $phpcms_auth_key, $memberinfo);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值