Server Side Includes (SSI) 는 기능/역할분담, 홈페이지 상단/하단부분, 혹은 여러 페이지에서 재사용될 수 있는 요소들을 만드는데 사용됩니다.


 

Server Side Includes(서버상에서 다른 페이지 포함시키기)

서버가 실행하기 전에, PHP 파일에 include() 나 require() 함수를 써서 다른 파일을 포함시킬 수 있습니다.

두 함수는 거의 모든면에서 동일하지만, 오류를 처리하는 방법이 다릅니다. 문제가 발생할때 include() 함수는 경고를 표시하고(하지만 스크립트 코드는 계속해서 실행됩니다) require() 함수는 치명적인 오류를 발생시킵니다. (그리고, 스크립트 실행은 오류 발생후 중지됩니다.)


이 두 함수들은 기능/역할분담, 홈페이지 상단/하단부분, 혹은 여러 페이지에서 재사용될 수 있는 요소들을 만드는데

사용됩니다.


이걸 사용함으로서 개발자는 상당한양의 시간을 아낄 수 있습니다. 즉, 모든 웹페이지에 포함되어야될 표준적인 헤더나 메뉴들을

따로 파일로 만들어서 인클루드(포함)시킬 수 있게 된다는 뜻입니다.

헤더가 업데이트 되어야 할때, 오직 이 하나의 인클루드 파일만 업데이트하면 되고, 혹은 사이트에 새로운 페이지를 추가할때

메뉴 파일만 간단한게 바꿔주면 모든 페이지에 적용된다는거죠. (모든 각각의 웹페이지에 있는 링크들을 일일히 업데이트하는 대신에 말이지요)



 

include() 함수

include() 함수는 지정된 파일의 모든 텍스트를 가져와서 인클루드 함수를 사용하는 파일에

복사해 넣습니다.


예제 1

"header.php" 라고 불리는 표준적인 헤더 파일이 있다고 가정해 봅시다. 페이지에 이 헤더 파일을 포함시키기 위해선, 아래처럼

include() 함수를 사용하면 됩니다:


<html>
<body>
<?php include("header.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>

</body> </html>



예제 2

이제, 모든 웹페이지에서 사용되어야만 하는 표준적인 메뉴 파일을 가지고 있다고 해 봅시다(포함되는 파일들은 주로 ".php" 확장자를 가짐).

아래쪽이 "menu.php" 파일입니다:

<html>
<body>
<a href="http://www.w3schools.com/default.php">Home</a> |
<a href="http://www.w3schools.com/about.php">About Us</a> | 
<a href="http://www.w3schools.com/contact.php">Contact Us</a>

"default.php", "about.php", "contact.php", 이 세개의 파일은 모두 반드시 "menu.php" 파일을 포함해야만 합니다.

아래쪽은 "default.php" 파일의 코드 입니다:

<?php include("menu.php"); ?>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>

"default.php" 파일을 소스를 웹브라우저에서 보면, 아래처럼 보일겁니다:

<html>
<body>
<a href="default.php">Home</a> |
<a href="about.php">About Us</a> | 
<a href="contact.php">Contact Us</a>
<h1>Welcome to my home page</h1>
<p>Some text</p>
</body>
</html>

그리고, 물론, "about.php", "contact.php"에도 똑같이 메뉴 파일을 인클루드(포함) 시켜야 겠지요. 인클루드 파일을 사용함으로서,

이름을 변경하거나, 링크의 순서를 바꾸거나, 사이트에 다른 웹페이지를 추가하기로 결정했을때, 간단히 "menu.php" 파일에 있는

텍스트만 업데이트 해주면 됩니다.



 

require() 함수

require() 함수는, 오류는 처리하는 방법이 다르다는 것만 빼면 include()와 동일합니다.

include() 함수는 경고를 생성하지만(하지만 스크립트는 계속 실행) require() 함수는 위에서 언급했듯이 치명적인 오류를 생성합니다

(그리고, 스크립트 실행은 오류 발생뒤 멈춤)

만일 include() 함수로 파일을 포함시키고 오류가 생기면, 아래와 유사한 형태의

오류 메시지를 받게 될겁니다.


PHP 코드:

<html>
<body>

<?php
include("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

오류 메시지:

Warning: include(wrongFile.php) [function.include]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5
Warning: include() [function.include]:
Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5
Hello World!

보시면 echo 구문은 여전히 실행된것을 알 수 있습니다.

이건 경고는 스크립트 실행을 멈추지 않기 때문입니다.


이제, 같은 예제를 require() 함수로 돌려봅시다.


PHP 코드:

<html>
<body>

<?php
require("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

오류 메시지:

Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5
Fatal error: require() [function.require]:
Failed opening required 'wrongFile.php'
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5

echo 구문이 실행되지 않았는데 그 이유는 치명적인 오류후 스크립트 실행이 중지되었기 때문입니다.

include() 보단 require() 함수를 사용하시길 더 권장합니다.

그 이유는, 파일이 없거나 이름이 잘못되었는데도 계속해서 실행되면 안되기 때문이죠.

Sirjhswin

신고