common.php 에서 include_once('config.php')에 공들이는 이유

common.php 에서 include_once('config.php')에 공들이는 이유

QA

common.php 에서 include_once('config.php')에 공들이는 이유

본문

common.php 에서

 

function g5_path()

{

    $chroot = substr($_SERVER['SCRIPT_FILENAME'], 0, strpos($_SERVER['SCRIPT_FILENAME'], dirname(__FILE__)));

    $result['path'] = str_replace('\\', '/', $chroot.dirname(__FILE__));

    $server_script_name = preg_replace('/\/+/', '/', str_replace('\\', '/', $_SERVER['SCRIPT_NAME']));

    $server_script_filename = preg_replace('/\/+/', '/', str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']));

    $tilde_remove = preg_replace('/^\/\~[^\/]+(.*)$/', '$1', $server_script_name);

    $document_root = str_replace($tilde_remove, '', $server_script_filename);

    $pattern = '/.*?' . preg_quote($document_root, '/') . '/i';

    $root = preg_replace($pattern, '', $result['path']);

    $port = ($_SERVER['SERVER_PORT'] == 80 || $_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];

    $http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';

    $user = str_replace(preg_replace($pattern, '', $server_script_filename), '', $server_script_name);

    $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];

    if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))

        $host = preg_replace('/:[0-9]+$/', '', $host);

    $host = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", '', $host);

    $result['url'] = $http.$host.$port.$user.$root;

    return $result;

}

 

$g5_path = g5_path();

 

include_once($g5_path['path'].'/config.php');   // 설정 파일

 

unset($g5_path);

 

에서

 

1. g5_path() 함수는 보안목적상 복잡하게 처리를 하는 것 같은데 맞나요?

 

2. 다른 파일을 include_once 할 때와 다르게 config.php 만 특별하게 처리하는 이유가 있나요?

 

 

이 질문에 댓글 쓰기 :

답변 2

g5_path() 가 복잡한 이유는

 

그누보드가 설치되는경로가 사용자 마다 다 다릅니다.

 

시스템의 경로하위가 아니라.

보통은 웹호스팅의 하위경로 혹은

서브디렉토리로 사용하는경우도 상당히 많은것으로 알고있습니다.

그러면

 

 G5_PATH라는 기준점을 잡기가 애매한거죠

그래서 

common.php가 작동되는 시작디렉토리를 찾아내는 일이 어렵죠

사용자마다 다르게 셋팅하지 않아도

g5_path()라는 함수를 이용해

그누보드 설치디렉토리를 G5_PATH로 지정하게 만드는 기능이라서

중요합니다.

그런것을 다 판단해서 리자님을 비롯한 그누보드 직원들이 공을 들인것으로 생각됩니다.

 

같은 이유로 설치디렉토리에 존재하는 config.php의 접근이 중요하게 되죠

답변을 작성하시기 전에 로그인 해주세요.
전체 1,019
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT