현재 경로 설정을 매번 수동으로 일일이 지정하려니까 귀찮아서 구글링으로 찾은 소스를 수정해서 구현했다.
구글에서 찾은 함수 pathUrl 는 http://localhost/ 라는 명칭을 찾아준다.
이런 방법으로 경로를 지정하면 보안 강화로 인해서 url forwarding 문제가 생긴다.
파일을 include 해서 사용하다보니 경로 설정에서 문제가 생기더라.
현재 실행되는 파일의 위치를 기준으로 경로를 인식해서 처리한다.
그러므로 홈페이지의 소스가 설치된 기준 위치를 어디로 정할 것인가를 고려해서 사용하면 된다.
<?php
$cur_root = pathUrl();
$g = array(
'path_root' => $cur_root,
'path_core' => $cur_root.'_core/',
'path_config' => $cur_root.'_core/config/',
'path_tmp' => $cur_root.'_tmp/',
'path_layout' => $cur_root.'layout/',
'path_module' => $cur_root.'modules/',
'path_plugin' => $cur_root.'plugin/',
'path_bootstrap' => $cur_root.'plugin/bootstrap/',
'path_page' => $cur_root.'pages/',
'path_file' => $cur_root.'files/'
);
function pathUrl($dir = __DIR__){
$root = "";
$dir = str_replace('\\', '/', realpath($dir));
//HTTPS or HTTP
$root .= !empty($_SERVER['HTTPS']) ? 'https' : 'http';
//HOST
$root .= '://' . $_SERVER['HTTP_HOST'];
$web_root = $root;
//ALIAS
if(!empty($_SERVER['CONTEXT_PREFIX'])) {
$root .= $_SERVER['CONTEXT_PREFIX'];
$root .= substr($dir, strlen($_SERVER[ 'CONTEXT_DOCUMENT_ROOT' ]));
} else {
$root .= substr($dir, strlen($_SERVER[ 'DOCUMENT_ROOT' ]));
}
$root = substr($root,strlen($web_root),strlen($root));
//$root .= '/';
// 홈페이지 기준점을 http://domain/abc/ 로 설정한 경우에는 -2 를 해준다.
$cnt = count(explode("/",$root)) -2; // 현재 경로 구하기
switch($cnt){ // 상대경로 설정
case 0:
$cur_root = './';
break;
case 1:
$cur_root = '../';
break;
case 2:
$cur_root = '../../';
break;
case 3:
$cur_root = '../../../';
break;
case 4:
$cur_root = '../../../../';
break;
case 5:
$cur_root = '../../../../../';
break;
}
return $cur_root;
}
?>
사용법 예제
<?php
if(!isset($_SESSION)) {
session_start();
}
require_once 'path.php';
session_save_path($g['path_tmp'].'session');
require_once $g['path_config'].'dbconnect.php';
require_once $g['path_config'].'config.php';
if(isset($_SESSION['userid'])){
$userid = $_SESSION['userid'];
}
$m = isset($_GET['m'])? $_GET['m']:'';
?>
'Web 프로그램 > Layout' 카테고리의 다른 글
div 태그를 이용하여 레이아웃 만들기 (0) | 2018.04.24 |
---|---|
bxslider 사용 예제 (폴더내 파일 자동 인식) (0) | 2017.04.28 |
모바일, PC 구분하는 코드 (0) | 2017.02.12 |
부트스트랩 테이블 Layout 구조 파악 (0) | 2017.02.01 |
[jQuery Mobile] 스마트폰 Layout (0) | 2016.11.11 |