본문 바로가기
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








댓글