노벨보드 만들기 [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 : 글 남겨 주세여~ 네~
시작하기 전에....
인스톨 소스가 일부 변경되었습니다.
다시 올립니다.
연재와는 직접적으로 연관이 없어 그대로 진행합니다.
지난시간에 이어서....
여러 테이블들이 있습니다. ( 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
0
댓글 2개
힘내세요~
많은 팬들이 생길겁니다~~ ^_~~
많은 팬들이 생길겁니다~~ ^_~~
잘 몰라도 재미있게 읽었구요..수고 많으십니다^^