회원가입아이디/비번찾기
홈으로

include와 require ?
13년 전
요즘은 노프레임으로 구성된 홈페이지가 많이 있습니다.
노프레임이란....프레임이 없다는거죠......

암튼...이런 노프레임 홈페이지를 만드려면.....
예를들어 위에 메뉴부분은 모든 페이지마다 다 넣어줘야 하겠죠...
똑같은 소스를 계속해서 넣어줘야 합니다.......

그런데 그러다가 메뉴하나를 수정할 일이 생기면 -_-?
메뉴가 들어간 모든 페이지를 다 수정해 줍니다..........;;;

하지만.......-_,- PHP를 사용하신다면 그런 수고를 덜수가 있죠;;

자 그럼 이번엔 다른얘기......
어떤 함수를 만들었습니다.....그리고 많은 페이지에서 그 함수를 사용합니다.
그래서 그 모든 페이지에 그 함수 소스를 다 집어 넣었습니다...
그러다가 함수내용을 수정할일이 생기면 -_-?
함수가 들어간 모든 페이지를 다 수정해 줍니다....... '_';;

하지만.......-_,-


위 두경우를 위해 include와 require라는게 있습니다.
둘다 모두 포함한다는 뜻을 가지고 있습니다...

일단 include에 대해 알아 볼까요~

include는 말그대로 다른 문서를 현재 문서에 포함시켜 주는것입니다.
예제를 보시죠....

>>> a.php
<?echo"P";?>

>>> b.php
<?echo"H";?>

이렇게 두개의 문서가 있습니다.
a.php 에서는 실행하면 P를 찍어 주겠죠..?
p.php 에서는 H를 찍습니다.

그런데 우리는 이 두문서를 이용해서 PHP를 찍어 볼까 합니다...
-_-?오또케?

c.php라는 문서를 만들어 보죠.......아래와 같이...

<?
include"a.php";
include"b.php";
include"a.php";
?>

실행을 해보면 PHP가 찍힐겁니다....
자......살펴 볼까요..?
include라는것은 include된 문서의 소스를 현재의 문서로 가져옵니다.
그러니까 우리가 만든 c.php의 소스는 아래와 같이 되어버리는거죠..

<?
echo"P";
echo"H";
echo"P";
?>

그렇죠? include"a.php";에서 a.php의 소스를 가져오기때문에 P를 찍고..
include"b.php";에서는 b.php의 소스를 가져와서..H를 찍습니다.

include의 간단한 예제를 하나 더 볼까요...
보통 라이브러리파일 이라고 해서 사용되는 함수들을 한개의 파일에 모아놓고 함수가 사용되는 문서에서 include해서 함수를 사용합니다.

>>> lib.php
<?
function TEST() { .... }
?>

위와 같이 lib.php에서 TEST()라는 함수가 선언되었죠...
그럼 test.php에 이렇게 해보죠..

>>> test.php
<?
include"lib.php";
TEST();
?>

lib.php를 include했기때문에 lib.php의 모든 함수를 사용할수 있게 되었습니다.
그래서 TEST()함수를 호출할수 있는 것이죠...
함수 이외에도 변수도 include하여 사용이 가능하다죠;;;

자 그럼.....더 재미난걸 해볼까요?...

>>>top.php
<table border=1>
<tr><td>

>>>bottom.php
</td></tr>
</table>

위 두소스를 볼까요...
top.php에서는 table의 시작입니다...<table>태그가 들어가고...
<tr>로 행을 만들고 <td>로 셀에 내용을 집어 넣을 준비가 된거죠..
그리고 끝입니다.

bottom.php3에서는 </td>로 셀을 닫고 </tr>로 행을 끝낸다음 </table>로 table을 끝냅니다.

이 두소스를 include하는 문서를 만들어 볼까요..

>>> middle.php
<?
include"top.php";
echo"PHP";
include"bottom.php";
?>

자....볼까요.......
먼저 top.php를 불러와서 테이블을 시작합니다....
그리고 그 테이블 속에 PHP라는 문자를 찍어준다음에...
bottom.php로 테이블을 끝내는것이죠....

쉽죠?-_-

노프레임 문서는 이런형태로 만들어 집니다...
예를 들면 한 문서의 소스에서 메뉴부분만 쏙 뺍니다....
그리고 그 소스를 다른 문서로 만든다음에...
메뉴가 들어가는 부분에 include해주면 끝입니다.
사실 프레임보다 훨씬 편한방법입니다...-_,-

뭐 꼭 노프레임이 아니더라도 배너 같은곳에 쓰시면 편하겠죠...
배너부분만 include해놓으면 나중에 수정하기 편할겁니다.

그런데 주의 할점은 다른경로의 문서를 include할때 입니다.
include는 상대 경로를 써서 해주는게 좋으며....
이미지 태그나 링크등을 주의 해야 하는데..... 예제를 보실까요?~

>>> http://DOMAIN/main/top.php
<img src=image/top.gif>

위 문서는 절대 경로가 http://DOMAIN/main/top.php 입니다.
그리고 문서 내용에 img태그에서는 상대 경로로 image/top.gif 라는 이미지를 띄우는거죠.....그러니까 image라는 폴더에 있는 이미지 입니다.

그럼 이걸 include할 문서를 보죠;;

>>> http://DOMAIN/index.php
<?include"main/top.php";?>

상대경로로 include했습니다. 이 index.php라는 문서는 경로상으로 root에 위치하고 include될 top.php라는 문서는 main이라는 서브디렉토리에 위치하는 거죠...
그래서 상대경로로 main/top.php라 주었습니다.
그런데 문제는 이렇게 하면 이미지가 안뜬다는거죠......-_-;엇

include가 되면 일단 가져온 소스는 현재 문서로 맞춰집니다.
그래서 <img src=image/top.gif> 라는 소스가 index.php의 소스로 간주 되기 때문에 결국 http://DOMAIN/image 라는 폴더에서 top.gif라는 이미지를 찾는 다는 얘기 입니다. @_@결국 경로가 꼬여 버리는거죠;;

해결 방법은 되도록 같은 경로에서 include하거나....
include될 문서의 모든 태그에서는 절대 경로를 사용합니다.
(이미지 또는 링크...등 주소가 들어가는 모든 태그)

수정된 소스를 보죠;;

>>> http://DOMAIN/main/top.php
<img src=http://DOMAIN/main/image/top.gif>

이렇게 해주면 되겠죠?^^

자 그럼 대충 include에 대해서 감을 잡으셨으리라 생각 됩니다.
그럼 require는 뭔가요?-_-?

require도 include와 같이....다른 파일을 불러와줍니다...
그런데 둘은 다르다지요;;;

가장 큰 차이점은...include는 조건문이나 반복문에서 사용할수 있습니다.
예를 들면...

if(~~~) {include"....";}

위와 같이 if의 조건이 참이면 include하라...라는게 된다는거죠;;;
그러나 require는 조건이 참이든 거짓이든 무조건 가져옵니다. -_-; 무식한넘;;
for문이나 while문에서도 마찬가지 이고요..

그리고 include는 한 문서에서 여러번 사용이 가능 합니다.
그러니까 같은 파일을 여러번 불러 올수가 있다는건데....
require는 한번밖에 불러올수가 없습니다....

-_-이렇게 보니 require가 무지 후져 보이네요;;;
그런데...한가지 require가 좋은점은...
include보다 속도가 빠르다네요;;;^^;

그러니까 위에서 얘기했던 함수라이브러리 파일같은 경우는 어짜피 한번만 불러오면 되는것이니까 속도가 빠른 require를 사용하시는게 좋겠죠~?

(그런데 처음에는 include를 사용하시다가 작업이 완료된후 require를 사용하시는게 좋습니다.
include에서는 에러메세지가 include된 파일을 중심으로 표시되기때문에 그 위치를 찾기 쉽지만 require는 불러들여진 상태로 에러메세지가 표시되기 때문에 에러메세지가 가르키는 위치를 찾기 힘들기 때문입니다)
추천추천 : 347 추천 목록
번호 제목
2,885
input 입력 필드 앞뒤 공백 실시간 제거
2,884
Placeholder 포커스시 감추기
2,883
MySQL 중복된 데이터를 삭제
2,882
MySQL 중복 데이터 확인
2,881
sessionStorage.getItem 와 sessionStorage.setItem
2,880
제이쿼리 랜덤으로 배경색 변경
2,879
preg match에 관한 정규식
2,878
Stream an audio file with MediaPlayer 오디오 파일 스트리밍 하기
2,877
Audio Streaming PHP Code
2,876
PHP $ SERVER 환경 변수 정리
2,875
Vimeo (비메오) API 를 사용하여 플레이어 컨트롤하기
2,874
iframe 사용시 하단에 발생하는 공백 제거방법
2,873
아이프레임(iframe) 전체화면 가능하게 하기
2,872
부트스트랩(bootstrapk)에서 사용하는 class명 정리
2,871
부트스트랩 CSS
2,870
크롬에서 마진 조절
2,869
PHP 현재 페이지의 도메인명이나 url등의 정보 알아오기
2,868
PHP preg match all()
2,867
PHP 로 웹페이지 긁어오기 모든 방법 총정리!
2,866
[PHP] 원격지 파일 주소 노출 안하고 curl로 다운로드 받기
2,865
PHP 함수 정리
2,864
아이프레임(iframe) 비율 유지하면서 크기 조절하는 방법
2,863
PHP 배열에서 무작위로 하나 뽑아주는 array rand() 함수
2,862
PHP 정규식 정리
2,861
PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
2,860
php 크롤링 또는 파싱 함수, 정규식 모음
2,859
제이쿼리 기본 명령어
2,858
웹페이지 가로 모드세로 모드 인식하기
2,857
모바일 웹 화면 강제 회전(가로모드 고정)
2,856
[HTML5]에서 frameset 대체 방법과 iframe 속성
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright ⓒ musictrot All rights reserved.