본문 바로가기
프로그래밍

phpschool 방명록강좌(1) - [ 전체 알고리즘 이해하기 ] 편

by 건우아빠유리남편 2009. 12. 6.
반응형


안녕하세요.
우선 이 소스는 phpschool에 공개된 방명록 소스로서 방명록, 게시판 소스의 대부분이 여러부분(예를들면 쓰기(write.php), 리스트보기(list.php), 지우기(del.php)등..) 으로 나눠져 있는경우가 많지만.. 이 소스는 파일 하나(guestbook.html)로 구성되어 있다는 점이 특징이라고 할 수 있겠습니다.
이 하나의 파일로 방명록이 어떻게 구현되는지는 앞으로.. 차차 설명하겠습니다.

강좌는 아마..(아직 생각하지 못했음..-_-;;) 3편내지는.. 4편이 되지않을까.. 생각되구요.. 정말 초보자도 쉽게 이해할수 있도록 하기위해 노력했습니다.

이미 올라와있는 소스를 새삼스레 뭐하러 다시 올리냐? 하시는 분들(아마 고수가 아니실까..-_-?)도 계실텐데.. 그분들껜 정말 죄송하지만 저를 비롯해 아직도 초보의 늪에서 허덕이고 있는 동지들과 이 밑도끝도 없는 늪에서 빠져나가보고싶어.. 강좌를 올리기로 결심했구요..(초보의 아픔은 초보가 압니다..T_T)

하나 더 있다면.. 소스에 약간의 버그가 있어서.. 약간.. 아주 약간 수정해서 올리는것입니다.

이 소스는 초보가 설명하는것이니.. 초보분들은 이해가는 부분이 많을것이라 생각되구요.. 고수분들께서는.. 그냥 쭈~욱 함 훑어 보시고.. 설명이 잘못된 부분이나 추가될 부분을 지적해주시면 정말 감사하겠습니다..(그러면서 배우는거죠 뭐.. ^^;;)

에궁.. 잡설이 길었네요..
그럼 시작해보겠습니다.

-----------------------------------------

위에서도 말씀드렸다시피 이 방명록은 소스파일 하나만으로 구현됩니다.

파일 이름은 guestbook.html입니다.. 파일의 세세한 부분은 다음 강좌부터 올리도록 하겠구요.. 오늘은 전체적인 알고리즘을 이해하는것 까지만 하겠습니다.
(숲을 먼저 보자는것이지요..^^;;)
  
하나의 파일 안에서 대체 무슨일이 일어날까요?

무척 궁금하지 않으십니까..?(별로 안궁금하다구요? 그래도 함 봐줘엽...-_-;;)

자. 그럼 파일(guestbook.html)이 어떻게 구성되어있는지.. 한번 보겠습니다.


*guestbook.html

기본적인 코딩을 제외한 알고리즘을 이해하기 위해 꼭 알아야할 부분만 나타내 보겠습니다.. 또한 스크롤하기가 귀찮으신 분들은 아래 <HTML>부터 </HTML>까지만 프린터로 출력해서 옆에 두시고 설명부분을 읽어보시면 훨씬 좋지 않을까.. 생각됩니당..
(주석표시된곳과 '.....' 으로 표시된 부분은 다음시간에 구체적으로 설명드리겠습니다..)

<HTML>
<HEAD>
<TITLE>guestbook</TITLE>
</HEAD>

<BODY>

<?php

//DB접속부분-----------------------------------
    ....
    ....
//----------------------------------------------



//처음 방명록 전체 글 리스트 보여주기-------------
   if(!$mode)
   {
    ....  /*이부분은
    ....     전체글을
    ....     보여주기위한
    ....     코드로 구성되어
    ....     있습니다..*/
    
    <a href='$PHP_SELF?mode=new'>글남기기</a>
    ....
    ....
    }
//------------------------------------------------



//글쓰기 form 띄우기-------------------------------
   if($mode=='new')
   {
       echo("<FORM name='form' method='post' action='$PHP_SELF'>
                  
                  ....../*이부분에는
                  ......   글쓰는 양식(form)이
                  ......   있습니다.*/

                 <input type='hidden' name='mode' value='up'>
                 </FORM>");
    }
//------------------------------------------------



//작성한 글을 올리고 전체 리스트 출력---------------
   if($mode=='up')
   {
    ..../*이부분에는
    ....   작성한 내용의
    ....   데이타를
    ....   DB에 저장하기위한
    ....   코드들로 구성되어
    ....   있습니다..*/

       echo("<meta http-equiv='Refresh' content='0; URL=$PHP_SELF'>");
    }
//-------------------------------------------------



//글 지우기-----------------------------------------
   if($mode=='del')
   {
    ....
    ....
      echo("<meta http-equiv='Refresh' content='0; URL=$PHP_SELF'>");
    }
//---------------------------------------------------

?>

</BODY>
</HTML>


자.. 그럼 천천히 살펴보겠습니다.

$mode라는 변수가 있죠?
이 방명록이 여러파일로 구성된 다른 방명록과 다른점은.. 바로 $mode라는 변수를 이용한데.. 있다고 할수 있겠습니다.

즉.. 처음 방명록으로(guestbook.html) 딱!! 이동하면.. $mode라는 변수는 NULL값입니다.. 없다는 얘기죠.. 왜냐하면 아직 정의된게 아니니까..!!

그럼 어떤일이 일어날까요?
$mode값이 없으니까.. if 문 중에서 '!$mode'가 참인부분을 읽겠죠?
이 부분이 바로 '처음 방명록 전체 글 리스트 보여주기' 부분입니다.

자.. 글이 쭉~ 출력되고.. 아래 보니까 '<a href='$PHP_SELF?mode=new>글남기기</a>' 부분이 있네요..

바로 '글남기기'를 누르면 $PHP_SELF를 통해 자기자신(<?php... ?>부분)을 리프레쉬(정확한지는 모르겠지만.. 의미는 전달됐으리라 생각됩니다.. 아시는분 지적해 주세요..^^;;)하면서 $mode라는 변수에 'new'라는 값을 넘겨주는 것입니다.
그러므로 현재 $mode값은 'new'가 되는거죠..
($PHP_SELF는 매우 요긴하게 쓰이는것 같습니다..^^;;)

그럼 이제 if 문 중에서 $mode=='new' 를 만족하는 부분을 읽겠죠?
그부분이 바로 '글쓰기 form 띄우기' 부분입니다..

이제 글쓰기 form에 글을 다 쓰고..입력을 완료하면(글올리기버튼을 누르면..)
FORM 태그와 input태그에 의해 각각 입력된 값들을 가지고 $mode변수에 'up'을 넘겨주게 됩니다..(php에서 FORM태그 쓰는법은 꼭 알아야 할 사항입니다..
꼭.. 따로.. 깊이 공부하시기 바랍니다..)
  
자.. 여기까지 이해가 되셨습니까? 이제 거의다 끝났습니다..

$mode변수에 'up'을 넘겨줬기 때문에.. <FORM ...  action='$PHP_SELF'>에서 보시다시피.. 리프레쉬해서.. $mode=='up' 을 만족하는 if문을 실행하게 됩니다.

그 부분이 실질적으로 글쓰기 form에 입력된 데이타를 DB에 저장하는 역할을 하는 부분인데요.. 이건 다음시간에 자세히 살펴보기로 하구요..

자.. 작성한 글을 올리고 전체 리스트 출력 부분에.. 아래쪽에 태그가 하나 있네요..
어느책에서 보니까.. 매우 유용하게 쓰인다고 하던데.. 맞는거 같아요..^^;;

<meta http-equiv='Refresh' content='0; URL=$PHP_SELF'>

쉽게 설명하자면 0초후에 리프레쉬한다는 뜻입니다.
넘겨주는 변수값이 없죠?

그렇기때문에 다시 !$mode 가 참인 부분($mode값이 없는 부분)을 읽는거구.. 그 부분이 바로 전체리스트 출력 부분입니다..

지금까지 한것을 차례대로 살펴본다면..

처음 방명록에 딱! 들어와서.. 글쓰기 버튼을 눌러서.. 글쓰기 form이 나타나고 글을 다 작성한 다음에 글올리기 버튼을 누르면 글이 올라가면서 전체리스트가 뜬다..

입니다..

어때요.. 이해가 되시나요..??

어렵다구요..? (어려우면 안되는뎅..ㅠㅠ)

물론 전체 코드를 보면서 강좌를 진행할 수도 있겠지만요..
처음부터 너무 부담될까봐(설명하는 저도 부담이 된답니다..^^;;) 오늘은 전체 알고리즘을 이해하는데 까지만 하기로 했습니다..

그리고 위 설명중 이해가 안가는 부분이나 설명이 잘못된 부분을 발견하신 분은 메일을 보내주셔도 되구요..(자세한 설명과 함께..^^;;) qna란에 적어주시면 시간나는대로 빨리 답변 혹은 해명(-_-;;) 해 드리겠습니다..


출처 : http://www.koreaphp.co.kr/index1.html
반응형

'프로그래밍' 카테고리의 다른 글

디자인 패턴 정리  (0) 2009.12.11
phpschool 방명록강좌 - 전체 소스  (0) 2009.12.06
PHP 인증사용하기  (0) 2009.12.06
PHP4의 또다른 이름 "Zend" 가 뭘까?  (0) 2009.12.06
PHP3 파일 구조 익히기  (0) 2009.12.06

댓글