PHP 매뉴얼
이전 | 2. 장. 간단한 튜토리얼 | 다음

# 유용한 무언가

이제 더 유용한 무언가를 해봅시다. 방문자가 사용하는 브라우저의 종류를 확인할 것입니다. 이를 위해서, 브라우저가 HTTP 요청의 부분으로 보내는 user agent 문자열을 확인합니다. 이 정보는 변수에 기록되어 있습니다. PHP에서 변수는 항상 달러표시($)로 시작합니다. 여기서 다룰 변수는 `$_SERVER['HTTP_USER_AGENT']`입니다.

> 참고: $_SERVER는 모든 웹 서버 정보를 포함하기 위해 특별히 예약된 PHP 변수입니다. 이것은 자동전역이라고 부릅니다. 더 많은 정보는 자동전역과 관련한 매뉴얼 페이지를 참고하십시오. 이 특별한 변수들은 PHP 4.1.0에서 소개되었습니다. 이전에는 `$HTTP_SERVER_VARS` 등의 `$HTTP_*_VARS` 배열을 이용하였습니다. 배제되었지만, 이 구형의 변수들은 아직 존재합니다. (예전의 코드에 관한 노트를 참고하십시오)

이 변수를 표시하기 위해서는, 간단히 다음과 같이 하면 됩니다:

예 2-2. 변수 출력하기 (배열 원소)

`<?php echo $_SERVER['HTTP_USER_AGENT']; ?>`

이 스크립트의 출력 예제는 다음과 같습니다:

    Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

PHP에는 많은 변수의 형이 존재합니다. 위 예제에서는 배열 원소를 출력했습니다. 배열은 매우 유용합니다.

`$_SERVER`는 PHP가 자동적으로 생성하는 변수 중의 하나에 불과합니다. 매뉴얼의 예약 정의 변수를 보거나, 다음과 같은 파일을 작성하여 모든 목록을 확인할 수 있습니다:

예 2-3. phpinfo()로 모든 예약 정의 변수 보기

`<?php phpinfo(); ?>`

이 파일을 브라우저로 읽으면, PHP에 대한 정보와 함께 사용 가능한 모든 변수들을 확인할 수 있습니다.

PHP 태그 안쪽으로 하나의 echo뿐이 아닌 여러개의 PHP문을 넣어서 작은 코드 블럭을 만들 수 있습니다. 예를 들면, Internet Explorer를 체크하고 싶다면 다음과 같이 할 수 있습니다:

예 2-4. 제어문과 함수를 사용하는 예제

`<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { echo 'Internet Explorer를 사용하고 있습니다<br />'; } ?>`

이 스크립트의 출력 예제:

    Internet Explorer를 사용하고 있습니다.<br />

여기서 두가지 새로운 컨셉을 소개합니다. PHP에는 if문이 있습니다. C 언어에서 사용하는 기본 문법에 친숙하다면, 이것은 매우 논리적으로 보일 것입니다. 그렇지 않으면, PHP 소개서를 구해서 첫부분을 읽어보거나, 매뉴얼의 언어 레퍼런스 부분을 읽어보십시오. PHP에 관한 책의 목록은 http://www.php.net/books.php에서 찾아볼 수 있습니다.

두번째 컨셉은 strpos() 함수 호출입니다. strpos()는 하나의 문자열을 다른 문자열에서 찾아내는 PHP 내장 함수입니다. 여기서는 `$_SERVER['HTTP_USER_AGENT']`(haystack이라고 합니다) 안에서 `'MSIE'`(needle이라고 합니다)를 찾아봅시다. haystack 안에서 needle을 발견하면, 이 함수는 haystack의 첫번째 문자로부터 needle의 위치를 반환합니다. 발견하지 못했다면 `FALSE`를 반환합니다. `FALSE`를 반환하지 않았다면, if문은 `TRUE`로 판단하고 {중괄호} 안에 있는 코드를 실행합니다. 그렇지 않으면, 코드를 실행하지 않습니다. if, else, 그리고 strtoupper()나 strlen() 등의 함수를 사용하는 비슷한 예제도 쉽게 작성할 수 있습니다. 관련된 매뉴얼 페이지들은 예제를 포함하고 있습니다. 어떻게 함수를 사용하는지를 모르겠다면, 매뉴얼의 함수 정의를 읽는 방법과 PHP 함수 섹션을 읽어보십시오.

한걸음 더 나아가서, PHP 블록 안에서 어떻게 PHP 모드를 드나드는지 알아봅시다:

예 2-5. HTML과 PHP 모드 섞기

`<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { ?> <h3>strpos는 false가 아닌 것을 반환했습니다.</h3> <center><b>Internet Explorer를 사용하고 있습니다.</b></center> <?php } else { ?> <h3>strpos는 false를 반환했습니다.</h3> <center><b>Internet Explorer를 사용하고 있지 않습니다.</b></center> <?php } ?>`

이 스크립트의 출력 예제:

    <h3>strstr은 true를 반환했습니다.</h3>
    <center><b>Internet Explorer를 사용하고 있습니다.</b></center>

PHP echo문을 이용한 출력 방법 대신, PHP 모드를 빠져나가서 직접 HTML을 전송할 수 있습니다. 여기서 주의해야할 중요하고 강력한 점은 스크립트의 논리적 흐름이 유지되고 있는 점입니다. strpos()의 결과값에 따라서 오직 하나의 HTML 블록만이 보여지게 됩니다. 즉, `MSIE`의 발견 여부에 따르게 됩니다.

이전 | 처음으로 | 다음
첫번째 PHP 실행 페이지 | 위로 | 폼 다루기