Skip to main content
조회 수 5731 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

XE index.php 파일 분석 : 주석을 제거하면 아래와 같습니다.

define('__NURI__',   TRUE);
define('__XE__',   TRUE);

require dirname(__FILE__) . '/config/config.inc.php';

$oContext = &Context::getInstance();
$oContext->init();

if($oContext->checkSSO()) {
	$oModuleHandler = new ModuleHandler();

	try {
		if($oModuleHandler->init())	{
			$oModule = &$oModuleHandler->procModule();
			$oModuleHandler->displayContent($oModule);
		}
	}catch(Exception $e) {
		htmlHeader();
		echo Context::getLang($e->getMessage());
		htmlFooter();
	}
}

$oContext->close();

define('__NURI__',   TRUE);
define('__XE__',   TRUE);

php에서 define() 함수는 상수를 정의합니다. (변수 = 변하는 수, 상수 = 변하지 않는 수)


require dirname(__FILE__) . '/config/config.inc.php';

config 폴더 config.inc.php 파일을 불러옵니다. config.inc.php 파일은 다음과 같습니다.


if(version_compare(PHP_VERSION, '5.4.0', '<')) {
	@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
}else {
	@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_STRICT);
}

if(!defined('__XE__')) {
	exit();
}

php버전에 따른 에러출력 모드를 결정합니다. (아마 php 상위 버전에서 E_STRICT를 제외 하는 걸로 봐서 대량의 경고 문구가 뿜어져 나오나 봅니다~


define('__ZBXE__', __XE__);
define('__NURI_VERSION__', '0.1.0.Acetaminophen');
define('__XE_VERSION__', '1.7.4.b1.NURI');
define('__ZBXE_VERSION__', __XE_VERSION__);
define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '/', __FILE__)));
ini_set('session.use_only_cookies', 0);
if(file_exists(_XE_PATH_ . 'config/package.inc.php')) {
	require _XE_PATH_ . 'config/package.inc.php';
}else {
	define('_XE_PACKAGE_', 'XE');
	define('_XE_LOCATION_', 'en');
	define('_NURI_LOCATION_SITE_', 'https://www.nuricms.org/');
	define('_XE_LOCATION_SITE_', 'http://www.xpressengine.org/');
	define('_XE_DOWNLOAD_SERVER_', 'http://en.download.xpressengine.org/');
}

if(file_exists(_XE_PATH_ . 'config/config.user.inc.php')) {
	require _XE_PATH_ . 'config/config.user.inc.php';
}

if(!defined('__DEBUG__'))
	... ... 디버그 관련 중간 생략 ... ...
if(!defined('__PROXY_SERVER__'))

if((__DEBUG_OUTPUT__ == 2) && version_compare(PHP_VERSION, '6.0.0') === -1) {
	require _XE_PATH_ . 'libs/FirePHPCore/FirePHP.class.php';
}

if(version_compare(PHP_VERSION, '5.3.0') >= 0) {
	date_default_timezone_set(@date_default_timezone_get());
}

대부분 difine() 함수로 상수를 정의하고 있습니다.

중간에 php 옵션을 설정하는 session.use_only_cookies 라는 부분은 찾아보니...

session.use_only_cookies는 모듈이 클라이언트측에 세션 id를 저장하기 위하여 쿠키 사용할 지 여부를 지정합니다. 이 설정을 활성화하면 URL로 전달되는 세션 id에 관련한 공격을 방지할 수 있습니다. 이 설정은 PHP 4.3.0에서 추가되었습니다. PHP 6.0부터 기본값은 1(활성화)입니다.

라고 되어 있습니다. 0으로 비활성화 하는걸로 봐서는 클라이언트측에 세션 id를 저장하기 위하여 쿠키만 사용하는게 아니라... 서버측에서 별도로 id를 저장하는것 같습니다. (6.0부터는 기본값 1이니, 관련 설정에 대해서 주시해야 겠군요~)

그 다음은 디버그에 대한 설정이고, 디버그 종류 및 php 버전에 따라 firephp class도 불러옵니다.
그리고 php 버전에 따라 timezone 설정도 하고 있습니다.


여기까지는 그냥 무난한것 같습니다.


다음은 XE classes폴더에 파일들을 로드하고 있습니다.

if(!defined('__XE_LOADED_CLASS__')) {
	require(_XE_PATH_ . 'config/func.inc.php');

	if(__DEBUG__)
		define('__StartTime__', getMicroTime());

	if(__DEBUG__)
		define('__ClassLoadStartTime__', getMicroTime());

	require(_XE_PATH_ . 'classes/object/Object.class.php');
	require(_XE_PATH_ . 'classes/extravar/Extravar.class.php');
	require(_XE_PATH_ . 'classes/handler/Handler.class.php');
	require(_XE_PATH_ . 'classes/xml/XmlParser.class.php');
	require(_XE_PATH_ . 'classes/xml/XmlGenerator.class.php');
	require(_XE_PATH_ . 'classes/xml/XmlJsFilter.class.php');
	require(_XE_PATH_ . 'classes/xml/XmlLangParser.class.php');
	require(_XE_PATH_ . 'classes/cache/CacheHandler.class.php');
	require(_XE_PATH_ . 'classes/context/Context.class.php');
	require(_XE_PATH_ . 'classes/db/DB.class.php');
	require(_XE_PATH_ . 'classes/file/FileHandler.class.php');
	require(_XE_PATH_ . 'classes/widget/WidgetHandler.class.php');
	require(_XE_PATH_ . 'classes/editor/EditorHandler.class.php');
	require(_XE_PATH_ . 'classes/module/ModuleObject.class.php');
	require(_XE_PATH_ . 'classes/module/ModuleHandler.class.php');
	require(_XE_PATH_ . 'classes/display/DisplayHandler.class.php');
	require(_XE_PATH_ . 'classes/template/TemplateHandler.class.php');
	require(_XE_PATH_ . 'classes/mail/Mail.class.php');
	require(_XE_PATH_ . 'classes/page/PageHandler.class.php');
	require(_XE_PATH_ . 'classes/mobile/Mobile.class.php');
	require(_XE_PATH_ . 'classes/validator/Validator.class.php');
	require(_XE_PATH_ . 'classes/frontendfile/FrontEndFileHandler.class.php');
	require(_XE_PATH_ . 'classes/security/Security.class.php');

	if(__DEBUG__)
		$GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__;
}


index.php 파일의 코딩부분... 딱! 3줄에 대한 설명은
기본적인 상수들을 정의하고 관련 클래스를 불러오고 있습니다.


List of Articles
번호 카테고리 제목 글쓴이 날짜 조회 수
74 기타 CMS 2008년 현존하는 최고의 CMS(컨텐츠 매니져 시스템) 줌라! Joomla! file 종스 2008.08.30 16807
73 UI jQuery UI widgets 종류 찾기 그리고 XE 적용하기 file geusgod 2011.12.17 13414
72 XE CSS LESS 라는 단어를 아는가? geusgod 2011.12.17 8167
71 XE 잡담 php 5.3 대응하기 1 geusgod 2012.12.26 6619
70 XE 팁 SocialXE Server - Facebook 인증불가시 (에러발생시) file geusgod 2011.12.16 11020
69 XE CSS XE /common/css/xe.css 파일 분석 및 활용 geusgod 2011.12.06 9997
68 XE 잡담 XE 1.2.5 버전 PHP 5.3.0 미지원 합니다. ㅠ.ㅠ file 종스 2009.09.04 17772
67 XE 팁 XE 1.2.5버전 날짜입력 부분 jQuery UI 버그 종스 2009.09.21 18724
66 XE 잡담 XE 1.5.x 말도 많고, 탈도 많고... ... 1 종스 2011.11.24 6931
65 XE 팁 xe 1.6.0 업그레이드를 위한 준비 geusgod 2012.06.28 8591
64 XE 잡담 XE 2009.09.22 SVN 최신 리비전 리스트 1 종스 2009.09.22 31275
63 XE 팁 XE Action Forward 와 Module Trigger 정리하기 종스 2011.11.01 11183
62 XE 팁 XE CKEditor 옵션 설정 (i 태그 유지하기) geusgod 2015.06.09 117020
61 XE 에러해결(FAQ) XE firefox 디버그 모드에서 x.js 의 DEPRECATED 표시 관련 geusgod 2012.05.24 5466
» XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(1) geusgod 2013.11.18 5731
59 XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(2) geusgod 2013.11.18 4915
58 XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(3) geusgod 2013.11.18 4820
57 XE 에러해결(FAQ) XE jQuery 단축함수 $ 미작동 되는 이유 geusgod 2009.10.26 21862
56 XE DB XE MSSQL 2005에 설치하기 2 종스 2009.11.19 34957
55 XE 잡담 XE rewrite module 관련 에러 문제... 1 file 종스 2008.11.08 22986
Board Pagination Prev 1 2 3 4 Next
/ 4