PHP 동작 방식
HTML 밖에 모르는 웹 브라우저?
HTML밖에 모르는 웹 브라우저라.... (물론 약간은 틀린 말입니다.) 바꿔서 말씀드리면 웹 브라우저는 HTML밖에 알아 듣지 못한다는 소리입니다. HTML이 브라우저가 쓰는 언어라는 것이지요. 사실은 약간의 외국어(자바스크립트 등)도 합니다.
중요한 건, 우리가 홈페이지를 만들려면 모든 문서를 결국 HTML로 작성해야 한다는 것입니다.
CGI의 등장
인터넷 초창기에는 대부분의 홈페이지가 모두 HTML(SGML)로 만들어져 있었습니다. (선택의 여지가 없었죠)
HTML로 홈페이지를 만들어 보신 분은 아시겠지만 ...
HTML은 워드같은 문서처럼 작성하고나면 내용이 변하지 않습니다. 내용을 바꾸려면 문서를 수정해야 하지요.
일반적인 경우라면 내용이 바뀌지 않는 것이 뭐가 문제인가?라고 생각이 듭니다.
하지만 뭔가 상황에 따라 웹 페이지가 변해야 한다면 큰 문제가 생깁니다.
그래서 생겨난 것이 바로 CGI (Common Gateway Interface)입니다.
CGI의 구조
CGI는 위와 같은 구조를 가지는데.. (HTML은 1과 4의 과정만 있음) 보시는 바와 같이 HTML 보다 한단계 더 처리를 함으로써 계산과 처리 기능이 추가되었습니다. 이로인해 우리는 정적인 변화 없는 웹 페이지에서 변화가 자유롭고 방문자와 홈페이지 제작자간에 서로 상호작용이 가능한 웹 페이지를 만들 수 있게 된 것입니다. 그러나 여기서 주의해야 할 점은 3번에서 보듯이 CGI로 처리된 값은 HTML로 전송되어 집니다. 웹 브라우저는 HTML밖에 모르니 HTML로 바꿔서 보여줘야 하는 것입니다. (PHP를 하려면 당연히 HTML을 알고 있어야겠죠?)
CGI와 PHP의 관계
PHP는 약간 다르긴 하지만 일종의 CGI라고 볼 수 있습니다.
그래서 PHP도 저 위의 그림과 비슷한 구조를 가집니다.
HTML에 없는 계산, 처리과정이란 도대체 어떤 것일까?
굉장히 많겠지만 지난시간에 테스트를 위해 만든 소스를 다시 이용해 보죠..
<?php
echo "첫번째 프로그램";
echo "아싸~";
echo "날짜 : " . date("Y-m-d");
이 소스는 2003년 4월 4일날 아래와 같은 결과였습니다.
그러나 똑같은 소스를 4월 5일에 똑같이 실행시켰는데.. 아래와 같은 결과가 나오네요..
이와같이 PHP는 사람이 바꾸지 않아도 알아서 처리하여 표시해 주는 것입니다. 여기에는 date 라는 날짜를 표시해주는 함수와 echo 라는 텍스트를 뿌려주는 함수 둘이 사용되었습니다. 위에서 말했듯이 우리는 결과를 HTML로 돌려주어야 한다고 했습니다. 위의 결과에 대해 소스보기를 하면...
첫번째 프로그램아싸~날짜 : 2003-04-05
이렇게 출력되어집니다.
위의 PHP코드는 일련의 처리과정을 거쳐 PHP 코드를 모두 지워 버리고 단지 HTML 코드만을 전송한 것이지요.
만약 PHP가 없었다면...
홈페이지에 날짜 표시 기능을 달기 위해서는
매일 매일 홈페이지에 들러서 제일 먼저 오늘의 날짜를 고쳐야 하는 수고를 했을 것입니다.
물론 게시판 같은 것은 꿈도 못 꾸었겠죠..
날짜 표시 부분은 자바스크립트로도 가능합니다.
그러나 약간의 차이가 있는데 PHP 는 서버 컴퓨터측 시계를 기준으로 하고
자바스크립트는 사용자의 컴퓨터 시계를 기준으로 합니다.
이제부터 고민해야 할 것...
이제부터는 PHP 함수등을 배워가면서 어떻게 그 결과를 HTML로 뿌려줄 수 있느냐를 고민하는 것
그것밖에 남지 않았군요..