2012년 9월 29일 토요일

hello world!

이 글을 읽는 분이 프로그래밍을 처음 접해본다면,
아마도 서버가 무엇인지, 데이타베이스가 무엇인지, 어떤 언어를 배워야 하는지에 대해서 궁금할 것입니다.
하지만, 웹 프로그래밍을 하고 싶다고 생각하셨다면, 사실 너무 많은 지식들을 머리에 구겨넣고 싶은 것이 아니라, 자신의 브라우저에서 당장 볼 수 있는 프로그래밍을 원할 것이라고 생각합니다.

그래서, 여러분이 처음 해야 하는 일은 php 프로그래밍 환경을 만드는 것입니다.
먼저, http://www.ampps.com/downloads 로 이동하셔서 자신의 컴퓨터에 맞는 프로그램을 다운로드 하고, 설치합니다.
그러면, 자신이 설치한 곳의 www라는 디렉토리(폴더)에 자신이 원하는 프로그래밍을 할 수 있는 준비가 된 것입니다.

이 곳에서 자신이 좋아하는 편집기로 다음과 같은 내용을 쓰고, 'index.php'라는 파일명으로 저장합니다.



<?php
print "<h1>hello world!</h1>";

이제, 브라우저에서 주소에 'localhost'라고 치면, 자신이 처음 만든, php프로그래밍이 hello world!라고 큰 글씨로 환영을 해 줄 것입니다.



그리고, 여러분은 생각하겠죠.
"그래서 뭐? 그냥 html파일로 만드는 것과 뭐가 틀려?"
"뭐 이딴걸 가르친답시고 인터넷 공간을 낭비하는 거지?"

...
물론, 이딴 것으로도 php에 대해서 많은 설명을 할 수 있지만, 별로 원하지 않을 겁니다.
그러므로, 다시 'index.php'를 열고, 이번에는 정말로 웹에서 하는 프로그래밍을 해 봅시다.

<?php
$name = $_GET['name'];
print "<h1>hello world! $name</h1>";


이렇게 저장을 하고, 주소에 'localhost?name=Madstorm' 하고 입력을 합니다.


감이 잡히시나요?
주소에 '?'를 넣고 난 다음의 xxx=yyy라는 형식으로 입력을 하면 브라우저는 GET이라는 방식으로 서버에 전달을 하고, php는 $_GET['xxx']라는 형식으로 그 이름을 받을 수 있습니다.
사용자와 상호작용을 할 수 있는 것이죠. 주소창에 여러가지 이름을 넣어 보시며 실험해 보시면 됩니다.

...
그럼, 사용자가 저 '?name=xxxx'를 기억해 두었다가 사용을 해야 하느냐고요?
아무래도 그건 껄끄럽겠죠. 게다가 주소가 지저분해 보이기도 하죠. 이름이 주소창에 보이는 것도 왠지 기분 나쁩니다. 개인정보는 매우 중요하기도 하고요.
만일 이런 생각이 드신 분이 있다면, 다시 index.php파일을 열고, 이렇게 해 봅시다.

<?php
$name = $_POST['name'];
print "<form method='post'>";
print "<label>이름을 써 주세요.</label>";
print "<input name='name' />";
print "</form>";
print "<h1>hello world! $name</h1>";

다시 localhost페이지를 열면 위쪽에 설명과 상자가 있고, 그 상자에 이름을 쓰고 엔터를 치면, 다음과 같은 모습이 나타날 것입니다.


<form>이라는 태그는 사용자로 부터 입력을 받고, method라는 속성에 따라 GET이나 POST, PUT, DELETE 등의 방식으로 서버에 전달합니다. php는 역시 $_POST['name'] 이라는 방식으로 그 내용을 받을 수 있고요.

보통 검색을 하는 경우는 GET방식을 사용해서 위치 정보를 노출시키고, 입력을 받아서 저장을 하는 경우는 POST방식으로 정보를 노출 시키지 않는 것이 보편적입니다.

"그럭저럭... 뭔가 프로그래밍 같기는 한데, 저렇게 계속 print 라고 써야 하는 건가?"
"계속 print와 ;를 반복하는 게 프로그래밍 인 건가? 뭔가 짜증나는데?"

....
만일 이렇게 생각하셨다면, 여러분은 프로그래머로서의 자질을 갖추고 계신 겁니다. 프로그래머는 반복적인 것을 보면 눈쌀을 찌푸리는 사람들 입니다. 같은 typing을 계속 하면 짜증이 나죠. 보통은. 게다가 보기에도 피곤합니다.
자, 마지막으로 코드를 정리해 봅시다. 

1단계 :

<?php
$name = $_POST['name'];
?>
<form method='post'>
<label>이름을 써 주세요.</label>
<input name='name' />
</form>
<h1>hello world! <?php print $name?></h1>

'<'와 '>'로 둘러쌓인 부분은 html태그입니다.
'<?php'와 ?>로 둘러쌓인 부분은 php프로그램입니다.
php는 이렇게 언제라도 중간 중간에 끼어들게 되어있죠.
이렇게 변경을 하고 브라우저에서 보면, 아까와 동일한 내용의 동일한 프로그램이 돌아갑니다.
이게 뭔 짓거리 일까요? 이 짓거리의 공식 명칭은 '리펙터링(refactoring)'이라고 하는데, 내용은 똑같지만, 코드를 더 보기 좋고 명확하게 하는 것을 뜻합니다. 한 페이지에 점점 많은 내용이 들어가게 되면, 여러분은 점점 더 이 무의미해 보이는 짓거리를 좋아하게 될 것입니다.

2단계 : index.php파일

<?
$name = $_POST['name'];
include 'index.html';

어라? simple해 졌군요. 그런데, 아래의 html 코드들은 어디로 갔을까요?
include 명령은 다른 파일을 가져오는 역할을 합니다. 사실 html 코드와 php코드가 섞여 있다면, 디자이너와 프로그래머가 각각 작업을 할 수 없기 때문에, 기본적으로 html파일을 떼어 내어 다른 파일에 저장하고, 디자이너에게 던져 주곤 하는거죠. 뭐, 현재는 여러분이 디자이너자 프로그래머 이기는 합니다만.
그래서 새로운 파일 'index.html'을 하나 만드셔야 합니다. 그리고는,

2단계 : index.html파일

<form method='post'>
<label>이름을 써 주세요.</label>
<input name='name' />
</form>
<h1>hello world! <?=$name?></h1>

이렇게 분리를 해 줍니다. 그리고 이번에는 주소창에 'localhost/index.php'로 들어갑니다.
웹서버는 파일명을 써 주지 않았을 때, 기본적으로 index.php나 index.html같은 파일을 자동으로 읽어 들이는 기능이 있는데, 기본적으로 index.html 파일을 먼저 읽게 되어 있군요. 그래서 index.php를 써 주는 것 입니다.
한가지 더. php는 option으로 'short tag'라는 것을 지원하는데, '<?php'는 <?로 줄여 쓸 수 있고, '<?php print'는 <?=로 줄여 쓸 수 있습니다.

이제 여러분은 간단한 웹 프로그래밍을 할 수 있는 "php 프로그래머라"고 할 수 있습니다.
코드를 정리하고 난 후라면, "좋은 php 프로그래머"입니다.

그러나, 아직 위의 index.html파일은 정확한 형식의 html이 아니군요. 이 blog는 php5에 관한 것이므로, html에 대한 부분은 w3schools.com 같은 곳이나, 다른 곳을 이용해서 배우시는 것이 좋을 듯 합니다.

댓글 없음:

댓글 쓰기