Skip to main content
조회 수 4376 추천 수 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 XE 에러해결(FAQ) XE 위젯(Widget) 페이지 수정 권한 오류 (msg_is_not_administrator 메세지 출력) geusgod 2015.06.22 464
73 XE 에러해결(FAQ) XE XML 쿼리 ORDER BY 대문자 사용하면 안됩니다. geusgod 2015.06.10 260
72 XE 팁 XE CKEditor 옵션 설정 (i 태그 유지하기) geusgod 2015.06.09 582
71 XE 팁 XE 비밀번호 찾기 질문/답변 필수 제거하기 geusgod 2014.07.11 2094
70 XE 에러해결(FAQ) XE SSL 선택적으로 사용시 act에 따른 링크 적용이 잘 안될때... geusgod 2014.06.05 2437
69 XE PHP [기초튼튼] PHP is_a 의미, 삼항연산자 1 geusgod 2013.11.18 3571
68 XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(3) geusgod 2013.11.18 4373
67 XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(2) geusgod 2013.11.18 3681
» XE PHP XE index.php 파일 부터 관련된 부분을 분석합시다.(1) geusgod 2013.11.18 4376
65 XE PHP [기초튼튼] PHP -> 의미 geusgod 2013.11.15 3502
64 XE PHP [기초튼튼] PHP & 의미, @ 의미, :: 의미, : 의미 3 geusgod 2013.11.15 8181
63 XE 팁 XE 외부페이지 이미지 리사이즈 애드온 적용하는 방법 geusgod 2013.11.07 4756
62 XE 팁 XE 구글 analytics 코드 어디에 넣어야 효율적인가? geusgod 2013.07.29 4905
61 XE 팁 XE 외부페이지 javascript 주석 처리시 주의점 geusgod 2013.03.18 5549
60 XE 잡담 php 5.3 대응하기 1 geusgod 2012.12.26 6506
59 XE 팁 XE 외부링크 이미지 썸네일 생성 문제 1 geusgod 2012.06.29 10625
58 XE 팁 xe 1.6.0 업그레이드를 위한 준비 geusgod 2012.06.28 8499
57 XE 팁 xe 외부페이지 mid 중복일때 다음페이지로 넘기는 방법 geusgod 2012.05.27 6631
56 XE 에러해결(FAQ) XE firefox 디버그 모드에서 x.js 의 DEPRECATED 표시 관련 geusgod 2012.05.24 5423
55 XE DB XML 쿼리 sort 정렬 두개 처리하는 방법 geusgod 2012.05.22 6352
Board Pagination Prev 1 2 3 4 Next
/ 4