홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
사이트 환경설정의 방법
10년 전
흔히들, 사이트를 개발할때, 그 사이트의 핵심 config(환경설정) 을 사용해야만 할때가
있습니다. 여러분들은 어떠한 식으로 환경설정을 정의하여, 그 해당 변수를 이용하시는지요?

몇가지 방법을 보자면 이럴것 같습니다.

1. inluce_once('./config.php');
#####################
환경설정
####################
$config['admin']          = "admin";
$config['server_time'] = time();
$config['time_ymd']    = date("Y-m-d", $g4['server_time']);
$config['time_his']    = date("H:i:s", $g4['server_time']);
$config['time_ymdhis'] = date("Y-m-d H:i:s", $g4['server_time']);

function user_func(){
  global $config;
  //$config 함수를 이용
}

혹은

2. 테이블을 이용하는 방법
#####################
환경설정
####################

$config = sql("select * from config_table");
해당 스키마를 보면,

CREATE TABLE IF NOT EXISTS `config` (
  `cf_title` varchar(255) NOT NULL default '',
  `cf_admin` varchar(255) NOT NULL default '',
  `cf_use_point` tinyint(4) NOT NULL default '0',
  `cf_use_norobot` tinyint(4) NOT NULL default '0',
  `cf_use_copy_log` tinyint(4) NOT NULL default '0',
  `cf_use_email_certify` tinyint(4) NOT NULL default '0',
  `cf_login_point` int(11) NOT NULL default '0',
  `cf_cut_name` tinyint(4) NOT NULL default '0',
  `cf_nick_modify` int(11) NOT NULL default '0',
  `cf_new_skin` varchar(255) NOT NULL default '',
  `cf_login_skin` varchar(255) NOT NULL default '',
  `cf_new_rows` int(11) NOT NULL default '0',
  `cf_search_skin` varchar(255) NOT NULL default '',
  `cf_10` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

위와 같이 여러가지의 이름을 가지는 필드가 환경 설정의 $confg 배열로 사용하는 방법
혹은 $config = sql("select * from config_table where id = 1");
와 같이 사용하기도 합니다.


3. parse_ini_file 파일을 이용한 방법

  설명 생략 ;;;


###############################################
위의 3가지 방법의 공통점은 무엇일까요?
###############################################
1. 다양한 환경변수를 만들수가 없다.
###############################################
2. 환경변수를 늘리려면, 필드를 늘리거나, config 변수를 수정해야 한다.
###############################################
3. 모듈화 할 수 없다
###############################################


저는 위의 3가지 방법의 이러한 단점이 존재한다고 생각하고 있습니다.



##############################################
아래의 방법은 우리나라는 아니지만, 좀 유명한 프레임워크에서 사용하는
환경설정을 이용하는 방식입니다.


//특정한 환결설정 변수를 호출 합니다.
function _get_config($name = false,$module = 'config') {
    static $config = null;//$config 는 항상 기억하고 있습니다.
    if(!isset($config)) {  //$config 가 없다면, 아래의 함수를 실행합니다.
                    $config = _set_config();
    }
                if (empty($config[$module][$name])) {
        $config[$module][$name] = false;
                }    // end of if
    return     $config[$module][$name];
}    // end of function


//환경설정 사항을 select 한다,
function _set_config(){
          $config = array();
          $sql = "SELECT * FROM xxx_config";
          $rs = mysql_query($sql);
          while ( $row = mysql_fetch_array($rs) ) {
    $config[$row['cf_module']][$row['cf_name']] = $row['cf_value'];
          }
      return $config;
}



//환경설정을 insert 합니다.
function _insert_config($name, $value, $module = 'config') {

  $sql = "select count(*) as cnt from xxx_config where cf_name = '$name' and cf_module ='$module'";
  $row = sql_fetch($sql);
  if ($row[cnt]) {
    return false;
  }
  $QUE = "INSERT INTO xxx_config SET ";
  $QUE .= "cf_name = '".trim($name)."',";
  $QUE .= "cf_value= '".addslashes(trim($value))."'";
  $QUE .= "cf_module= '".trim($hook)."'";
  $rs = mysql_query($QUE);
        
}    // end of function


//환경설정을 업데이트 합니다.
function _update_config($name,$value, $module = 'config') {
        $sql = "select count(*) as cnt from xxx_config where cf_name = '$name' and cf_module='$module";
        $row = sql_fetch($sql);
      if ($row[cnt]) {
          $value = addslashes(trim($value));
          $sql = "update xxx_config set cf_value = '$value' where cf_name = '$name' and cf_module='$module";
          $rs = sql_query($sql);
    } else {
        _insert_config($name,$value,$module);
    }
}    // end of function




사용법은 아래와 같습니다.

if(!$sitename = _get_config('sitename')){
    $sitename = "startpage";
    _insert_config('sitename', $sitename);
}

위와 같이 사용한다면, config 함수의 다양성을 맛볼 수 있고,
module 화도 가능하다는 장점이 있습니다...

CREATE TABLE IF NOT EXISTS `xxx_config` (
  `id` bigint(10) unsigned NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `value` text NOT NULL,
  `module` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY ` xxx_conf_nam_uix` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8  ;
추천추천 : 514 추천 목록
번호 제목
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
3,008
 윈도우10 시스템 파일 및 Dism 검사
3,007
 텍스트 줄바꿈, 글자자르기 CSS
3,006
 jQuery Mobile에서 유용한 코드 10가지.
3,005
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,004
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,003
 [jQuery] jQuery Quick API
3,002
 [ transition ] 링크 hover 색상 변화 속도 조절
3,001
 PHP 5.3.0 에서 사라진 함수들 대체
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.