emlog整站代码分析 后台部分index.php

作者:fly 发布于:2014-2-21 10:05 分类:Emlog

版权声明:本文系www.forwhat.cn原创 ,尊重作者劳动,转载请标明出处。本文转载自www.forwhat.cn谢谢

 

<?php
/**
 * 管理中心
 * @copyright (c) Emlog All Rights Reserved
 */

require_once 'globals.php';
//上边那一行,干的事貌似挺重要的,请参阅我对globals.php文件的分析。自己切吧。我刚切回来。

if ($action == '') {
	//登录成功后后台首页的显示
	//这里是无动作。要说$action是哪里来的,如果你刚才切了。去你大脑的堆空间找吧,如果你已经释放了,那就悲剧了。
	
	//获取头像。如果设置了,就显示设置的头像,如果没有设置,就显示默认的头像avatar.jpg
	$avatar = empty($user_cache[UID]['avatar']) ? './views/images/avatar.jpg' : '../' . $user_cache[UID]['avatar'];
	//获取用户名
	$name =  $user_cache[UID]['name'];
	//获取环境变量、下边这几个都是。
	$serverapp = $_SERVER['SERVER_SOFTWARE'];
	
	$DB = MySql::getInstance();
	$mysql_ver = $DB->getMysqlVersion();//数据库版本
	
	$php_ver = PHP_VERSION;//php版本
	
	//ini_get函数是获取php.ini中设定的变量
	$uploadfile_maxsize = ini_get('upload_max_filesize');//上传的最大附件尺寸
	$safe_mode = ini_get('safe_mode');
	
	//下边是对GD图形库的获取
	if (function_exists("imagecreate")) {
		if (function_exists('gd_info')) {
			$ver_info = gd_info();
			$gd_ver = $ver_info['GD Version'];
		} else{
			$gd_ver = '支持';
		}
	} else{
		$gd_ver = '不支持';
	}
	//开始显示页面
	//模板的东西太坑了,直接跳过吧。小弟的短板。
	include View::getView('header');
	require_once(View::getView('index'));
	include View::getView('footer');
	View::output();
}
//点击检查更新按钮的时候,貌似由JS来操作,回头看JS的时候再说吧,那个格式,实在是,,一锅粥啊。
if ($action == 'update' && ROLE == ROLE_ADMIN) {
	$source = isset($_GET['source']) ? trim($_GET['source']) : '';
	$upsql = isset($_GET['upsql']) ? trim($_GET['upsql']) : '';

	if (empty($source)) {
		exit('error');
	}
	//这个宏定义OFFICIAL_SERVICE_HOST在globals.php中,为官方域名。
	$temp_file = emFecthFile(OFFICIAL_SERVICE_HOST . $source);//这里应该就是下载文件了。
	if (!$temp_file) {
		 exit('error_down');
	}

	$ret = emUnZip($temp_file, '../', 'update');//解压到上一级目录下,
	@unlink($temp_file);

	switch ($ret) {
		case 1:
		case 2:
			exit('error_dir');
			break;
		case 3:
			exit('error_zip');
			break;
	}

	//update db
	if(!$upsql) {
		exit('succ');
	}
	//如果不需要更新数据库,上边就退出了。
	//如果需要更新。则继续往下执行。
	$DB = MySql::getInstance();
	//这里难道是对数据库版本的限制吗?
	$setchar = $DB->getMysqlVersion() > '4.1' ? "ALTER DATABASE `" . DB_NAME . "` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;" : '';
	$temp_file = emFecthFile(OFFICIAL_SERVICE_HOST . $upsql);
	if (!$temp_file) {
		 exit('error_down');
	}
	//好吧下边自己看吧。基本结束了。
	$sql = file($temp_file);
	@unlink($temp_file);
	array_unshift($sql,$setchar);
	$query = '';
	foreach ($sql as $value) {
		if (!$value || $value[0]=='#') {
			continue;
		}
		$value = str_replace("{db_prefix}", DB_PREFIX, trim($value));
		if (preg_match("/\;$/i", $value)) {
			$query .= $value;
			$DB->query($query);
			$query = '';
		} else{
			$query .= $value;
		}
	}
	$CACHE->updateCache();
	exit('succ');
}
//phpinfo()
if ($action == 'phpinfo') {
	//点击更多信息的时候触发。
	@phpinfo() OR emMsg("phpinfo函数被禁用!");
}

 

发表评论:

 
Powered by emlog sitemap