노벨보드 만들기 [8] > 자유게시판

자유게시판

노벨보드 만들기 [8] 정보

기타 노벨보드 만들기 [8]

본문

게시판 만들기 8화


시작하기 전에....
  인스톨 소스가 일부 변경되었습니다.
  다시 올립니다.
  연재와는 직접적으로 연관이 없어 그대로 진행합니다.

지난시간에 이어서....
  여러 테이블들이 있습니다. ( install_ok.php )
  지난 연재에서 일부 테이블에 대해 이야기를 해 드린적이 있습니다.
  설명에 빠진 테이블에 회원 테이블이 있는데 직접 읽어 보시면 이해가 될 정도록 쉽게 만들어져 있습니다.

  @mysql_query( "drop table $cfg[nb_zip]", $connect );
  sql_query( $nb_zp );  // 우편번호 테이블 생성
  @mysql_query( "drop table $cfg[nb_board]", $connect );
  sql_query( $nb_board );  // 게시판 테이블 생성
  @mysql_query( "drop table $cfg[nb_member]", $connect );
  sql_query( $nb_member );  // 회원정보 테이블 생성
  @mysql_query( "drop table $cfg[nb_default]", $connect );
  sql_query( $nb_default );  sql_query( $nb_default_insert );

  DB 접속 부분 다음에 위와 같은 소스가 보입니다.
  @은 명령실행 후 에러가 나더라도 에러 메세지를 화면에 출력하지 않게 합니다.
  장점은 에러로 인한 프로그램 중단현상을 막을 수 있습니다.
  단점은 에러가 나더라도 확인이 되지 않습니다.
  에러가 나도 프로그램에 문제가 생기지 않는 부분에 넣어주면 좋습니다.

  mysql_query() 함수는 DB에 명령을 전달해 줍니다.
  @mysql_query( "drop table $cfg[nb_default]", $connect ); 은 기본설정 테이블을 지우라는 명령입니다.
  drop table : 테이블을 지워라
  $cfg[nb_default] : 기본설정 테이블의 이름이 저장되어 있는 변수 ( 예제 파일 참고 )
  $connect : DB의 위치가 저장되어 있는 변수

  이와 같은 명령으로 우리가 만들 테이블들을 지웁니다.
  아직만들지 않은 테이블을 지우는 이유는 나중에 다시 설치할 때 원래의 자료로 인해 생기는 문제를 제거하기 위해 미리 지워주는 명령을 내려 줍니다.

  sql_query( $nb_zp ); 은 우편번호 테이블을 만드는 명령입니다.
  sql_query()함수는 지난 연재들에서 말씀드린대로 직접만든 함수로 DB에 명령을 전달하고 에러메세지를 받아 출력하는 기능을 가지고 있습니다.
  앞서 우편번호 테이블을 만드는 변수를 만들었습니다.
  이것을 입력으로 주면 됩니다.
  이와 같은 방법으로 각 테이블들을 만들어 줍니다.

  $pass = pass_make( $admin_pw );
  $nm_admin = " insert into $cfg[nb_member]
      set nm_id='$admin_id', nm_passwd='$pass', nm_name='$admin_name', nm_level='$cfg[level_max]',
      nm_login = '$date[now]', nm_joining_ip='$_SERVER[REMOTE_ADDR]' ";
  sql_query( $nm_admin );

  위의 소스는 관리자 데이타를 회원 테이블에 저장하는 일을 합니다. ( 데이타는 index.php 에서 받았음 )
  다른 부분들은 앞에서 설명되었으니 회원테이타를 입력하는 DB명령에 대해 설명하겠습니다.

  insert into ~ : ~에 입력해라 ( 여기서는 테이블명 입니다. )
  $cfg[nb_member] : 회원 테이블 이름이 저장되어 있는 변수
  set ~ : 설정, nm_id='변수명' 처럼 해주면 nm_id 를 찾아 변수값을 입력하라는 뜻이 됩니다.
    여기서는 회원아이디, 암호, 접속일, 접속IP, 회원이름, 회원레벨 등을 입력했습니다.
  $date[now] : 현재 날짜와 시간이 저장되어 있는 변수( 예제 파일 소스 참고 )
  $_SERVER[REMOTE_ADDR] : 현재 아이피를 가지고 있는 서버 변수입니다. ( 아파치 변수 )

  차근 차근 살펴보면 아실 수 있으리라 생각됩니다.

  $nm_admin = " update $cfg[nb_default] set nd_admin = '$admin_id' ";
  sql_query( $nm_admin );

  위의 소스는 기본설정 테이블에 관리자 아이디를 입력해 줍니다.
  등록되어 있는 회원 데이타에서 관리자 데이타를 뽑아내기 위해 사용됩니다.

  update ~ : ~을 수정해라
  $cfg[nb_default] : 기본설정 테이블이름이 저장되어 있는 변수
  set ~ : 설정해라
  nd_admin = '$admin_id' : nd_admin 에 관리자 아이디를 입력해라

  $fp = @file( "./post.dat" ) or die( "우편번호 스키마 파일이 없습니다.<p><input type=button value=' 뒤 로 ' onclick='history.go(-1);'>" );
  while ( $zip = each($fp) ) {
      $zip_data = explode ( '^', $zip[1] );
      if ( $zip_data[6] == 1 ) $sql = "insert into nb_zp values ( '$zip_data[0]', '$zip_data[1]', '$zip_data[2]', '$zip_data[3]', '$zip_data[4]', '$zip_data[5]', '$zip_data[6]' );";
      else $sql = "insert into $cfg[nb_zip] values ( '$zip_data[0]', '', '$zip_data[4]', '$zip_data[1]', '$zip_data[2]', '$zip_data[3]', '2' );";
      sql_query( $sql );
  }

  우편번호 데이타를 우편번호 테이블에 저장하는 소스입니다.
  이해하기는 어렵지 않을듯 합니다.

  $fp = file( 파일명 ) : 파일을 읽어 옵니다. $fp는파일의 위치를 저장하는 변수입니다.
  $zip = each($fp) : key/value를 $zip에 저장합니다.
    $zip[1] = 값,  $zip[0] = 키
    즉, 한번 읽을때 마다 한마디를 읽고( 우편번호 데이타 파일은 한줄이 끝나야 공백이 있다. 즉, 여기서는 한줄이 한마디가 된다. ) $zip[1]에는 그 내용을, $zip[0]에는 그 값의 위치를 저장한다.
    소스에서는  while()문으로 반복하므로 $zip[0]에 저장되는 데이타의 위치가 마지막이 되어야 반복을 마친다.
  $zip_data = explode( 기준문자, 문자열 ) : 문자열을 기준문자를 기준으로 분리합니다. $zip_data는 결과값의 배열입니다.
  if ( $zip_data[6] == 1 ) {} else {} : 줄의 끝이 1이면 일반 우편번호, 2면 기관우편번호 이므로 다른형식으로 저장하기 위해 사용 - 이부분은 전에 언급한 적이 있었다.

  설명이 조금 난해 하지만 내용은 역시 단순합니다.
  소스를 보고 분석해 봅시다. ( 이미 설명 했지만 설명이 난해 해서 이해가 어려울듯... )

  if($connect) {
    @mysql_close($connect);
    unset($connect);
  }

  DB를 닫는 소스입니다.

  // DB 설정파일 생성
  $fp= @fopen("../dbconfig.php","w")
      or die("파일을 생성 할 수 없습니다.<br>설치 디렉토리의 권한을 확인해 보시기 바랍니다.<p><input type=button value=' 뒤 로 ' onclick='history.go(-1);'>");
  fwrite($fp,"<?\n");
  fwrite($fp,"\$host_name ='$host_name';\n");
  fwrite($fp,"\$db_name ='$db_name';\n");
  fwrite($fp,"\$db_user_id ='$db_user_id';\n");
  fwrite($fp,"\$db_pass ='$db_pass';\n");
  fwrite($fp,"?>");
  fclose($fp);
  chmod("../dbconfig.php", 0604);

  DB접속 데이타를 다음에 쓸 수 있도록 파일로 만듭니다.
  앞서 이야기 했던 내용들이 많습니다.
  빠진 부분만 설명합니다.

  fwrite( 파일위치,"내용") : 파일에 한줄을 입력합니다.
    전시간에 정규 표현식에서 설명했듯이 특수문자를 입력하기 위해서는 앞에 \를 넣어 주어야 합니다.
  소스에서는 $라는 특수문자만 사용되었습니다.
  ( \n 은 파일에 저장할때 다음줄에 하라는 명령입니다. 특수문자 입력이 아님에 유념하시길.. )
  chmod("../dbconfig.php", 0604) : 퍼미션(접근권한)을 조정합니다.

  // 디렉토리 생성
  @mkdir("../data", 0707);
  @chmod("../data", 0707);
  @mkdir("../data/file", 0707);
  @chmod("../data/file", 0707);
  @mkdir("../data/session", 0707);
  @chmod("../data/session", 0707);
  @mkdir("../data/member", 0707);
  @chmod("../data/member", 0707);

  데이타를 저장할 디렉토리를 만들고 퍼미션을 조정해 줍니다.

  <table border="0" cellspacing="0" cellpadding="0" align="center"><tr><td>
      <p>설치를 모두 마쳤습니다.</p>
      <center><input type=image src='images/_ok.gif' border=0 align=absmiddle onclick="location='<?="../admin/index.php"?>';"></center>
  </td></tr></table>

  설치를 마친 후 확인해 주길 기다리는 부분입니다.


  이로서 노벨보드의 설치 프로그램이 끝났습니다.
  다음시간에는 기본설정 파일인 config.php에 대해 알아 보도록 하겠습니다.
  config.php는 노벨보드를 화면에 표시하기전 설정사항과 해주어야 할 일들을 처리해 주는 파일입니다.

  지금까지 집을 만들기 위해 땅을 팠습니다.
  config.php를 시작으로 뼈대를 세워 봅시다.

PS : 글 남겨 주세여~ 네~
추천
0

댓글 2개

전체 195,479 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT