웹마스터 팁

제 홈페이지에 올린 강좌입니다.

자 이제 드디어 게시판을 한번 만들어 보겠습니다.
제가 이 강좌를 통해서 만들게 될 게시판은 묻지마 보드가 아닙니다..^^
초보용으로 제가 따로 작업해둔 게시판입니다.
이 강좌를 연재하면서 같이 만들어 나가는 중입니다.
물론 시간만 된다면 금방 만들지만 요즘 여유가 없습니다.. 죄송 --;;

강좌를 진행하면서 게시판 소스를 제가 미리미리 만들어서 소스 및 스킨을
캡쳐해서 올려드릴건데 나중에 이 강좌에 쓰인 게시판 소스는 모두
자료실로 올려드리도록 하겠습니다.

이제 모든 준비가 됐다면 게시판을 만들어보도록 하겠습니다.
제가 이제부터 만들 게시판은 홈페이지에 올려놓고 사용하기에는 그리 적합하기 않은
게시판인듯 하네요..^^ 강좌용으로 만드는거고 초보용이라서 별 기능이 없습니다.

강좌를 글리스트부분 부터 시작할까 했는데..
글리스트는 리스트에 보여줄 글이 있어야 한다는 생각에..
우선 글을 저장하기 위한 글쓰기 부분부터 하기로 했습니다.
우선 아래 그림을 보세요.. 오늘 강좌를 하면서 만들어낼 글쓰기 부분입니다..^^
무지 허접하다구요? ^^ 겉모습이 중요한게 아니랍니다.



이제 가장 먼저 여러분들에게 준비하기를 권하는게 있습니다.
가장 먼저 아래 소스를 만들어 두셨음 합니다. 앞으로 계속 사용될 소스입니다..^^
dbconn.php라는 이름으로 저장해두시길 바랍니다.



위의 소스는 바로 디비에 접속하는 부분이죠..^^
위의 소스를 만들었다면.. 이제 게시판의 디비 테이블을 만들어보도록 하겠습니다.



위의 소스가 바로 게시판의 테이블을 구성해줄 소스입니다.
보시면 아시겠지만 테이블 이름이 board_$db라고 되어있음을
볼수있습니다. 이건 왜그러냐하면..^^
바로 멀티게시판을 위한거죠..

물론 그냥 게시판 테이블 이름을 board 라고만 해줘도 됩니다.
그럼 나중에 게시판 소스 하나로 여러개의 게시판을 생성해서 사용하기가 힘들죠..
안된다기보다도 무지하게 불편해지게 됩니다.

board_$db여기서 $db라는 변수를
잘 알아두셔야 합니다. 매우 중요하답니다..^^
근데 소스중에 $db라는 변수가 정해지지 않았다고 하시는 분들이 있을지도 모르겠네요..
예.. 맞습니다. 안정해져있습니다.
바로 브라우져 주소창에서 정해주는겁니다.
브라우져 주소창에서 가장첨에 정해준다음에.. $db 변수를 게시판이 눈에 보이는 순간에는
항상 데리고 다녀야 합니다. $db가 없어진다면 게시판 소스는 어떤 게시판을 가르키는지
알수가 없게 된답니다.

위 소스를 짰다면.. 이제 브라우져 상에서
http://주소/폴더/schema.php?db=게시판이름
이렇게 넣어보세요..

그러면.. 아무런것도 안나오고 그냥 흰화면만 보입니다..
예.. 그렇게 되면 정상입니다..^^

게시판 이름을 예를들어 mrjh라고 넣었다면 board_mrjh라는
테이블이 생성된겁니다.

나중에 게시판 추가하고 싶다면..
http://주소/폴더/schema.php?db=다른 게시판이름
이렇게 넣어주면 또다른 게시판이 생성이 되겠죵?? ^^

이제 디비테이블이 생성이 되었다면.. write.php파일을
만들어보도록 하겠습니다.



짠~ 빨리 만들죠?? ^^ 헤헤.. 벌써 다 만들어뒀답니다..
위 소스에도 보시면 아시겠지만



이렇게 $db라는 변수가 숨겨져있음을 알수가 있습니다.
왜 숨겨뒀냐면.. 글작성후 OK버튼을 눌렀을때 write_ok.php파일로 자료를 넘겨줄때
$db라는 정보도 같이 넘겨줘야 하거든요..

그렇다면.. 현재 write.php파일에서 $db정보는 어떻게 받아왔냐구요??
바로 글 리스트에서 하단에 "글쓰기"를 링크할때
list.php?db=게시판이름 이런식으로 링크를 해서
$db 정보를 넘겨주는 겁니다. 이제 아시겠죠??
항상!! 항상!! $db정보는 넘겨줘야 한답니다.

그렇다면.. 최초의 $db정보는 어디서 오냐??
바로.. 주소창이죠..^^

http://mrjh.com/mrjh_board/list.php?db=freeboard

바로 이렇게 주소창에다가 $db변수를 넘겨주는거죠.. 가장 최초에..

자 지금까지는 별문제가 없을꺼라 생각합니다.
이제 젤로 중요한 부분입니다.
바로.. 글작성한 내용을 디비에 입력시키는 부분입니다.



위 소스에서 첨에 if 문으로 시작하는 부분은.. 체크하는 부분입니다.
글쓸때 이름, 제목, 비번, 내용을 넣었나 안넣었나..
체크하는 부분이죠..
여기서 주의할 사항이..

요전에 "PHP의 제어문" 강좌에서도 설명했지만..

    if(!$memo){
        echo "[script] window.alert('내용을 입력하세요'); history.go(-1) [/script]";
        exit;
    }


여기서 exit가 아주 중요합니다.
exit가 없다면.. "내용을 입력하세요" 라고 경고창이 뜨긴하지만..
뜨고난후에 나머지 소스를 다 읽어버립니다.

그래서 소스를 보시면 아시겠지만..
마지막에 디비에 입력하는 부분이 있는데..
디비에 입력까지 해버리게 되는거죠...^^

그래서 항상 exit라는 함수를 이용해서.. 소스 중간에서 끝내게끔 해줘야 한답니다.

그리고 글쓴 시간을 구해야 합니다.
제가 구성한 디비 테이블을 보시면 아시겠지만..
date란에 int(13) 으로 타입이 설정되어있습니다.

물론 date란 날짜형으로 사용하면 자동으로 2002-8-17일이라고 입력이 되지만..
이건 별로 추천하고 싶지가 않네요..^^
나중에 날짜를 많이 활용할 경우가 생기게 된답니다.

time();함수를 사용하면 현재시간의 타임스탬프값을 구하는거죠..
시간함수에 관련한건 입문강좌에서 다루기로 하고..
여튼.. 타임스탬프를 이용하는 습관을 들여야 한답니다.

그래야 나중에 시간과 관련해서 요리하기가 아주 편하거든요...^^

    // 태그제거함
    $title = htmlspecialchars($title);
    $name = htmlspecialchars($name);
    $memo = htmlspecialchars($memo);

그리고 게시판을 첨 만드는거라면 태그를 다 제거해주는걸 권장하고 싶군요..^^
나중에 좀거 발전된 게시판에대해서 강좌할때는..
부분별로 태그 허용및... 등등등에 대해서 하기로 하고

초급편 게시판에서는 HTML 사용이 안되는걸로 하겠습니다.

    // 디비에 입력
    mysql_query("insert into board_$db (name,title,memo,password,hit,date) values
('$name','$title','$memo','$password','0','$date')");
    mysql_close($connect);

    echo "[meta http-equiv='refresh' content='0;URL=list.php?db=$db']";

이제 디비에 입력만하시면 됩니다.
마지막에 잘 보시면 메타태그를 사용해서..

자동으로 리스트로 되돌려 보내죠??

물론 자바스크립트로 history.go(-1)을 사용할수도 있지만..
메타태그를 사용하면 자동으로 리프레쉬가 되기때문에.. 좋습니다..

리스트로 되돌려 보낼때도.. 마지막에 $db정보를 넘겨주죠??
항상!! 넘겨줘야 한답니다..^^

여기까지.. 글쓰기 부분입니다.

첨에도 말씀드렸지만.. 제가 지금 강의하는.. 게시판은 일반적인 웹상에서 사용하기에는
적합하지가 않습니다. 보안상 문제도 있고..
초보자들을 위해서.. 게시판의 전체적인 구조를 설명하기 위한 게시판 소스라는걸
알고계시기 바랍니다.

그럼 다음 강좌에서는 글리스트부분을 보도록하겠습니다.
빠빠~
제목 글쓴이 날짜
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 1 [17] 아이쿠 2002.08.30
array_multisort를 이용한 간단한 순위체크 [4] Doogi 2002.08.28
변수를 사용하여 echo로 변수값 출력하기. [7] ZipShin 2002.08.28
sleep() 제대루 쓰기... 요것두 [별루 알아도 도움 안되는 팁] [5] sMokaHallo 2002.08.24
[허접] implode() 함수로 배열을 변수로! Myzzix 2002.08.23
[허접] rand() 함수를 이용한 뒤죽박죽 날짜 출력 [5] Myzzix 2002.08.23
파일하나로 만드는 한줄 메모장(테마기능 포함) [8] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22
꼭 알아야 하는 4가지 쿼리문 Mr. JH 2002.08.22
테이블 생성시 데이터베이스의 타입설정 [2] Mr. JH 2002.08.22
누구나 만들수있는 게시판 [글삭제, 수정 부분] [4] file Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글보기 view.php 부분] [1] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글목록 list.php 부분] [6] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [schema, write, write_ok] [10] Mr. JH 2002.08.21
제로 카운터 숫자 조정하기 [8] 이주경 2002.08.21
Print 이건또 뭐지? 사이트 찾다보니 있던데..^^ [13] ZipShin 2002.08.16
기초 통계 프로그램 for 귀차니스트;; [3] TheMics 2002.08.10
쓸모있는 PHP Tip (다 알구 있을런지 모르겠네여..^^) [1] 이삐아이(체리) 2002.08.09