본문 바로가기
PHP 게시판 만들기

9. 중복 코드는 하나의 파일로 작성해서 포함시키기

by 똑똑한 영장류 2012. 12. 13.


Chap 9.


파일이 하나 둘 늘어가고 있습니다. 그러다 보니, 상단의 공통된 내용들이 보이네요.


BODY 태그 안의 내용은 페이지에따라 달라지겠지만, DB관련 코드나, 세션 관련 코드들이 중복되네요.


이 내용들을 하나의 파일로 만들어두고, 각 페이지에서 include() 계열 함수를 이용해서 포함시키도록 하겠습니다.


함수 설명은 PHP 카테고리에서 찾을 수 있습니다.


어디서 어디까지를 잘라낼까요?

일단 아래 정도 preset.php 로 만들어 둡시다.



<?php
session_start();

$p = array();
$path['root'] = $_SERVER['DOCUMENT_ROOT'].'/';

require_once ($path['root'].'config.php');

$mysqli = new mysqli($DB['host'], $DB['id'], $DB['pw'], $DB['db']);
if (mysqli_connect_error()) {
    exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}

extract($_POST);
extract($_GET);

?>



모든 파일의 상단에 preset.php 를 포함하도록 코드를 작성해야겠네요.


require_once( 'preset.php' );


...라고 적어봤더니... 이런..파일 경로가 문제네요. 파일의 위치와는 무관하게 항상 preset.php 를 포함시킬 수 있으려면, 상대경로가 아닌 절대경로로 preset.php 파일의 위치를 지정해줘야겠습니다.


위에 보이는 config.php 의 경로도 위치에 따라서 문제가 될 수 있겠네요.


서버 환경변수를 이용해야겠습니다.


수퍼글로벌 변수 중에 $_SERVER[] 가 있습니다.


배열 첨자에 따라서 여러가지 값을 구할 수 있습니다. 지금 우리에게 필요한건 DOCUMENT_ROOT 입니다.


require_once($_SERVER['DOCUMENT_ROOT'].'/preset.php');


모든 작성하는 파일 상단에 위 코드를 삽입해서 www  디렉토리 아래에 있는 preset.php를 포함시키도록 합니다. preset.php 는 공통적으로 사용될 모든 코드를 넣어두면 되겠습니다.




하나하나 다 보여줄 수 없으니, 이제 압축해서 파일로 업로드를 하겠습니다.


이상!




www.zip








댓글9

  • vmff 2013.10.08 19:34

    옥에 티가 ... 먼저 감사드립니다. 쉽게 잘 정리되고, 군살없이 깔끔합니다.
    설명 또한 잘되어 있어 어떻게 여기까지 왔나 싶게 정신없이 따라가고 있습니다.

    require_once ($paath['root'].'config.php');

    paath ===> path 로

    쓸데없이 지적질 하는거 같아서 망설이다. 좋은 작품에 티가 있는거 보단 수정되어
    다듬어 졌으면 하는 바램입니다. 나중에 책내세요! 꼭 한 부 살께요. ^^


    답글

  • php 초보자 2014.01.24 15:15

    배열 p는 왜 만드신거죠?
    답글

  • PHP초보 2014.12.25 03:47

    고급정보입니다. 감사합니다.
    답글

  • php멘붕 2015.01.29 00:53

    $path['root'] 이 변수는 어떻게 해석해야하는건가용?
    보통은 $변수 = "어떤 메시지"; 이렇게 쓰잖아요? 근데 $변수[] = ...; 이렇게 괄호가 들어있는것은 어떻게 쓰이는건지 알려주세요!
    답글

  • 유준상 2015.02.25 14:35

    첨부파일에 t 는 어디에 적용시켜야하나요?
    답글