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의 접근이 중요하게 되죠
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인