웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
이미 인클루드된 파일은 다시 인클루드하지 않기
2003.06.20 10:46
원문 링크 : http://www.100kwa.net/zeroboard/zboard.php?id=php&no=47
존칭 생략함을 양해해 주시기 바랍니다.
아래 본인의 글을 삭제하려고 하였다.
그런데 다른 분들의 코멘트 속에 확실하고 간단한 답이 있는 것을 발견하였다.
비록 잘 모르더라도 엔지오에 글을 올린 덕분에 기초를 확실하게 배울 수 있는 즐거음 ...
댓글 주신 분들께 진심으로 감사를 드리며, 정리해 보자면
1. 인클루드될(백과넷의 경우 상당 85픽셀 내용)파일의 맨 위를
<?
$_zb_url = "http://www.100kwa.net/zeroboard/";
$_zb_path = "/home/hosting_users/4nara/www/zeroboard/";
if($included) return false;
else $included = 1;
include $_zb_path."outlogin.php";
?>
<html>
와 같이 시작한다.
2. 위 파일을 인클루드하는 다른 파일들에서는 단순히 include만 해 주면 된다.
3. 주의할 사항
<? include "http://www.100kwa.net/master/가나다.htm"; ?>과 같이 하면 안 된다.
이렇게 사용해 보니, $included값을 무시하고(적당한 표현인가?) 거듭 불러들였다.
<? include "../master/가나다.htm"; ?>과 같이 상대경로를 사용해야 된다.
4. 잔소리 : 위 몇 줄의 정리는 나처럼 헤매는 초보자들을 위한 배려이다.
아래 본인의 글을 보기 전에, 먼저 댓글들을 보시기 바란다.
---
제로보드에는 그룹 상단에 포함시킬 파일, 각 게시판의 상단에 포함시킬 파일 등을 설정하여 편하게 디자인할 수 있는 기능을 제공한다.
PHP의 include 명령을 이용하거나, 헤더 파일에서 정의하는 것 같은데 헤더 파일 운운은 아직 이해하지 못한 부분이고, 인클루드 명령을 사용하면 노프레임 페이지마다 같은 메뉴파일을 삽입하여 일관된 디자인을 유지할 수 있다.
뿐만 아니라, 메뉴파일에서 스타일시트 등을 일괄 정의할 수 있고 배경이미지를 한 번만 삽입해도 모든 파일에 나타나며, 레이어를 띄워서 디자인의 폭을 넓힐 수도 있다.
이 모든 내용을 며칠 사이에 터득하고는 상당히 기뻤다.
1. 전제가 되는 상황
백과넷을 방문하면 디자인을 볼 수 있으므로 그림 업로드는 생략한다.
1)
메뉴 파일 : /master/가나다.htm
- 이 파일에 /master/가나다_link.htm(ㄱ,ㄴ,...), /master/family_top.htm(사이트GO-링크100,홈피100,...), print_outlogin("kim",1,10) 등 3개의 인클루드 또는 프린트가 있다.
2)
개개의 파일에서 /master/가나다.htm (메뉴)파일을 인클루드한다.
2. 문제 상황
신문.htm 파일에서도 메뉴파일을 인클루드하고 전문신문.htm 파일에서도 메뉴파일을 인클루드한다. 모든 개별 파일에서 메뉴파일을 인클루드해야 사이트 내부 또는 패밀리에 속한 다른 사이트로의 이동을 위한 내비게이션이 가능하기 때문이다.
그런데 신문.htm 파일에서 전문신문.htm 파일을 인클루드하면 어떤 상황이 발생할까?
메뉴 파일을 2번 인클루드하는 결과, 메뉴 파일에 인클루드 또는 프린트된 객체들이 같은 이름으로 2번 떠오르면서 객체성을 상실하고 다양한 에러의 발생원인으로 변질된다.
3. 유저를 위한 고민
손님이 찾지 않는 가게는 망한다고 보아야 할 것이다.
손님은 신문.htm 파일을 찾기도 하고 전문신문.htm 파일을 찾기도 한다.
그런데 신문.htm 파일에 전문신문.htm 파일을 인클루드하면 더 좋아할 것 같다.
3. 초보적인 해결책
그래서 궁여지책으로 생각한 방법이 전문신문.htm 파일의 내용만 뽑아서 전문신문@.htm 파일을 추가로 만들고 전문신문.htm 파일에서도 그 새 파일을 인클루드하고, 신문.htm 파일에서도 그 새 파일을 인클루드하는 방법을 사용하면 문제는 해결된다.
그러나 만족할 수 없는 지나치게 초보적인 방법이다.
4. 객체의 존재여부를 따져서 같은 파일은 2번 인클루드하지 않기
HTML에서 객체의 존재여부를 확인하려면 document.all['이름']=='[object]'와 같은 비교식으로 처리하며, PHP에서 객체의 존재여부를 확인하는 함수로는 is_object가 있다.
그러나 필자와 같은 초보로서는 아무리 짜맞추어 보아도 명쾌한 답이 떠오르지 않았다.
5. 변수 전달하여 해결
인클루드된 파일에서 $로 시작하여 정의한 변수는, 메인 파일에서도 그대로 인식한다.
메뉴 파일에 들어가는 하나의 객체 정의 뒤에 그 객체를 변수에 담는 것이다.
<td width="200" valign="top" rowspan="2">
<div id="lay_가나다" style="width:180px; height:2000px; position:absolute; left:0px; top:0px; z-index:1;">
<table border="0" cellpadding="0" cellspacing="0" width="180" height="2000" bgcolor="#CDDEEF">
<tr>
<td width="994">
<p> </p>
</td>
</tr>
</table>
</div>
<? $log100 = document.all.lay_가나다; ?>
</td>
이제 메뉴 파일을 인클루드하는 개별 파일에 무조건 인클루드하는 다음 구문 대신
<?
include "../master/가나다.htm";
?>
변수 $log100이 존재하지 않으면 인클루드하는 구문으로 바꾸자.
<?
if (!$log100) include "../master/가나다.htm";
?>
이것으로 해결되었다.
누구나 다 아는 사실일지 모르지만, 모르는 분도 있을 것이다.
기쁜 마음에 공유하고파 이 글을 올린다.
글 보아 주셔서 감사합니다.
존칭 생략함을 양해해 주시기 바랍니다.
아래 본인의 글을 삭제하려고 하였다.
그런데 다른 분들의 코멘트 속에 확실하고 간단한 답이 있는 것을 발견하였다.
비록 잘 모르더라도 엔지오에 글을 올린 덕분에 기초를 확실하게 배울 수 있는 즐거음 ...
댓글 주신 분들께 진심으로 감사를 드리며, 정리해 보자면
1. 인클루드될(백과넷의 경우 상당 85픽셀 내용)파일의 맨 위를
<?
$_zb_url = "http://www.100kwa.net/zeroboard/";
$_zb_path = "/home/hosting_users/4nara/www/zeroboard/";
if($included) return false;
else $included = 1;
include $_zb_path."outlogin.php";
?>
<html>
와 같이 시작한다.
2. 위 파일을 인클루드하는 다른 파일들에서는 단순히 include만 해 주면 된다.
3. 주의할 사항
<? include "http://www.100kwa.net/master/가나다.htm"; ?>과 같이 하면 안 된다.
이렇게 사용해 보니, $included값을 무시하고(적당한 표현인가?) 거듭 불러들였다.
<? include "../master/가나다.htm"; ?>과 같이 상대경로를 사용해야 된다.
4. 잔소리 : 위 몇 줄의 정리는 나처럼 헤매는 초보자들을 위한 배려이다.
아래 본인의 글을 보기 전에, 먼저 댓글들을 보시기 바란다.
---
제로보드에는 그룹 상단에 포함시킬 파일, 각 게시판의 상단에 포함시킬 파일 등을 설정하여 편하게 디자인할 수 있는 기능을 제공한다.
PHP의 include 명령을 이용하거나, 헤더 파일에서 정의하는 것 같은데 헤더 파일 운운은 아직 이해하지 못한 부분이고, 인클루드 명령을 사용하면 노프레임 페이지마다 같은 메뉴파일을 삽입하여 일관된 디자인을 유지할 수 있다.
뿐만 아니라, 메뉴파일에서 스타일시트 등을 일괄 정의할 수 있고 배경이미지를 한 번만 삽입해도 모든 파일에 나타나며, 레이어를 띄워서 디자인의 폭을 넓힐 수도 있다.
이 모든 내용을 며칠 사이에 터득하고는 상당히 기뻤다.
1. 전제가 되는 상황
백과넷을 방문하면 디자인을 볼 수 있으므로 그림 업로드는 생략한다.
1)
메뉴 파일 : /master/가나다.htm
- 이 파일에 /master/가나다_link.htm(ㄱ,ㄴ,...), /master/family_top.htm(사이트GO-링크100,홈피100,...), print_outlogin("kim",1,10) 등 3개의 인클루드 또는 프린트가 있다.
2)
개개의 파일에서 /master/가나다.htm (메뉴)파일을 인클루드한다.
2. 문제 상황
신문.htm 파일에서도 메뉴파일을 인클루드하고 전문신문.htm 파일에서도 메뉴파일을 인클루드한다. 모든 개별 파일에서 메뉴파일을 인클루드해야 사이트 내부 또는 패밀리에 속한 다른 사이트로의 이동을 위한 내비게이션이 가능하기 때문이다.
그런데 신문.htm 파일에서 전문신문.htm 파일을 인클루드하면 어떤 상황이 발생할까?
메뉴 파일을 2번 인클루드하는 결과, 메뉴 파일에 인클루드 또는 프린트된 객체들이 같은 이름으로 2번 떠오르면서 객체성을 상실하고 다양한 에러의 발생원인으로 변질된다.
3. 유저를 위한 고민
손님이 찾지 않는 가게는 망한다고 보아야 할 것이다.
손님은 신문.htm 파일을 찾기도 하고 전문신문.htm 파일을 찾기도 한다.
그런데 신문.htm 파일에 전문신문.htm 파일을 인클루드하면 더 좋아할 것 같다.
3. 초보적인 해결책
그래서 궁여지책으로 생각한 방법이 전문신문.htm 파일의 내용만 뽑아서 전문신문@.htm 파일을 추가로 만들고 전문신문.htm 파일에서도 그 새 파일을 인클루드하고, 신문.htm 파일에서도 그 새 파일을 인클루드하는 방법을 사용하면 문제는 해결된다.
그러나 만족할 수 없는 지나치게 초보적인 방법이다.
4. 객체의 존재여부를 따져서 같은 파일은 2번 인클루드하지 않기
HTML에서 객체의 존재여부를 확인하려면 document.all['이름']=='[object]'와 같은 비교식으로 처리하며, PHP에서 객체의 존재여부를 확인하는 함수로는 is_object가 있다.
그러나 필자와 같은 초보로서는 아무리 짜맞추어 보아도 명쾌한 답이 떠오르지 않았다.
5. 변수 전달하여 해결
인클루드된 파일에서 $로 시작하여 정의한 변수는, 메인 파일에서도 그대로 인식한다.
메뉴 파일에 들어가는 하나의 객체 정의 뒤에 그 객체를 변수에 담는 것이다.
<td width="200" valign="top" rowspan="2">
<div id="lay_가나다" style="width:180px; height:2000px; position:absolute; left:0px; top:0px; z-index:1;">
<table border="0" cellpadding="0" cellspacing="0" width="180" height="2000" bgcolor="#CDDEEF">
<tr>
<td width="994">
<p> </p>
</td>
</tr>
</table>
</div>
<? $log100 = document.all.lay_가나다; ?>
</td>
이제 메뉴 파일을 인클루드하는 개별 파일에 무조건 인클루드하는 다음 구문 대신
<?
include "../master/가나다.htm";
?>
변수 $log100이 존재하지 않으면 인클루드하는 구문으로 바꾸자.
<?
if (!$log100) include "../master/가나다.htm";
?>
이것으로 해결되었다.
누구나 다 아는 사실일지 모르지만, 모르는 분도 있을 것이다.
기쁜 마음에 공유하고파 이 글을 올린다.
글 보아 주셔서 감사합니다.
댓글 14
제목 | 글쓴이 | 날짜 |
---|---|---|
스킨 시스템 구축.(1탄 읽어오기) [11] | 씨파개 | 2003.05.13 |
Wake On Lan 기능 사용하기... [3] | sMokaHallo | 2003.05.17 |
썸네일 자동생성하고 이미지 사이즈 자동 줄이기... [6] | sMokaHallo | 2003.05.21 |
홈페이지의 내용을 DB에 담기 [15] | 세죠위그이 | 2003.05.30 |
체크박스등으로 배열로 변수를 넘길때.. [1] | myself2 | 2003.06.06 |
php 로 기존 문서 포함시키기 [10] | 이성헌 | 2003.06.08 |
PHP 익히기 1 [24] | 구리구리 | 2003.06.09 |
PHP 익히기 2 [9] | 구리구리 | 2003.06.10 |
PHP 익히기 3 [11] | 구리구리 | 2003.06.17 |
이미 인클루드된 파일은 다시 인클루드하지 않기 [14] | 김병희 | 2003.06.20 |
htmlspecialchars 사용하시는 분들 [5] | holies | 2003.07.11 |
Thumbnail 생성하기 - 수정^^; [9] | holies | 2003.07.11 |
'와 "의 속도 차이?! [6] | holies | 2003.07.12 |
초간단 php 랜덤 이미지 및 랜덤 배경이미지 소스 [6] | 거금도 | 2003.07.24 |
다른 사이트에 있는 파일 읽어오기 [50] | 김규백 | 2003.07.25 |
스킨 시스템 사용하기 [2] | 김규백 | 2003.07.25 |
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?) [18] | HungryMania | 2003.08.01 |
체널을 응용해서 tmain.php?tdb=test&db=src 식으로 쓰기 [12] | 9000㎒ | 2003.08.01 |
$i++ !== $i += 1 [14] | 플로렐라 | 2003.08.04 |
개판 오분전 정규식(4) | 미친개 | 2003.08.07 |