MySql 5.0 이상에서의 디비 입출력 해결=.= > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

MySql 5.0 이상에서의 디비 입출력 해결=.= 정보

MySql 5.0 이상에서의 디비 입출력 해결=.=

첨부파일

gnuboard4[4.10.00].utf8[patch].zip (130.9K) 56회 다운로드 2006-12-27 17:28:00

본문

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2497
원작이구요.
이번 gnuboard4[4.10.00].utf8 맞게 올려 봅니다.

인스톨 부분 설명 없길래.. 추가루 넣었습니다-.-

설명이 보기 힘드시면.,
http://edm.zc.bz/gb4/bbs/board.php?bo_table=gb4_utf8
에 있습니다-.-

최신 파일 4.10.00 이니, 걍 첨부 파일만 불러와 업로드 후 설치 바랍니다.
본 팁 올린이유: 설명이.. 좀 머시기 하게 올려져 있어서리.. 풀어서.. 올립니당..
질문 사절 이구요,.
어디 까지나.
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2497
~~
팁 이라는거~



My Sql 5.0 버전 사용시 Gnuboard4 Utf8 DB 입출력 완벽하게 수정 하기.
그누보드4 utf8 패치 파일로 따로 공개해 두었습니다. 기존 사용자를 위한 배려 입니다^^

1. 그누보드디렉토리/common.php 수정

그누보드 디렉토리/common.php 파일의 10번행에 보시면

if (!isset($set_time_limit)) $set_time_limit = 0;
@set_time_limit($set_time_limit);

라는 부분이 있습니다.
이 두행 사이에

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가



if (!isset($set_time_limit)) $set_time_limit = 0;
@mysql_query("set names utf8");
@set_time_limit($set_time_limit);

식으로 삽입 합니다.

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

2. 그누보드디렉토리/lib/common.lib.php

다음..그누보드 디렉토리/lib/common.lib.php 파일에서,

// DB 연결
function sql_connect($host, $user, $pass)
{
    return @mysql_connect($host, $user, $pass);
}


// DB 선택
function sql_select_db($db, $connect)
{
    return @mysql_select_db($db, $connect);
}

부분을 찾아

return @mysql_select_db($db, $connect);

바로 위에

    @mysql_query("set names utf8"); // 한글문제해결을위하여 추가

를 삽입해 줍니다.

EX >>>>>>>>>>>>>>>>>>>>>>>
// DB 연결
function sql_connect($host, $user, $pass)
{
    @mysql_query("set names utf8"); // 한글문제해결을위하여 추가
    return @mysql_connect($host, $user, $pass);
}


// DB 선택
function sql_select_db($db, $connect)
{
    @mysql_query("set names utf8"); // 한글문제해결을위하여 추가
    return @mysql_select_db($db, $connect);
}
EX >>>>>>>>>>>>>>>>>>>>>>>

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


이렇게 하면,

db접속 후에 모든 데이터의 처리를 utf-8로 합니다. 주의할 점은 mysql 버전이 5 이상의 경우 utf-8이 아니라 utf8 입니다. 이렇게 하고 데이터를 불러오거나 저장을 하면 db에도 실제로 utf-8현식으로 저장이 됩니다.

주의하실 점은 이미 기존의 데이터가 있는 상황에서 @mysql_query("set names utf8");을 적용하면 기존의 쌓인 데이터는 실제 utf-8이 아니므로 출력 부분에서도 깨져 보입니다. 따라서 초기 세팅시에 위 부분을 수정하시고 인스톨을 진행하면 모든 부분에서 utf-8로의 입출력이 가능 합니다.


또한, mysql 5 이상의 환경에서 인스톨시 보다 안전하게 인스톨을 위해서는 인스톨 디렉토리의 sql_gnuboard4.sql 파일을 열어서 각 테이블 생성 DDL의 마지막에,

 type=MyISAM;

이 부분을

 ENGINE=MyISAM DEFAULT CHARSET=utf8;

이렇게 해 주시면 테이블 또한 확실하게 utf-8형식으로 생성이 됩니다.
저의 경우는 이부분은 안해도 되더군요...^^

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

3. 그누보드디렉토리/install/install_db/install_db.php 수정

그누보드폴더/install/install_db.php 파일의 쿼리부분 몇군데에
@mysql_query("set names utf8");
를 넣어주면 설치시에 기본으로 디비에 입력되는 내용들도 모두 한글로 입력이 됩니다.

ⓐ 1차 수정
 
40 행에 보시면

$dblink = @mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (!$dblink) {
    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
    echo "<script-x language='JavaScript-x'>alert('MySQL Host, User, Password 를 확인해 주십시오.');history.back();</script-x>";
    exit;
}
$select_db = @mysql_select_db($mysql_db, $dblink);
if (!$select_db) {
    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
    echo "<script-x language='JavaScript-x'>alert('MySQL DB 를 확인해 주십시오.');history.back();</script-x>";
    exit;
}
?>

라는 부분이 있습니다.
그 부분을 찾으시어

$select_db = @mysql_select_db($mysql_db, $dblink);

바로 위에

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가



$dblink = @mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (!$dblink) {
    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
    echo "<script-x language='JavaScript-x'>alert('MySQL Host, User, Password 를 확인해 주십시오.');history.back();</script-x>";
    exit;
}
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
$select_db = @mysql_select_db($mysql_db, $dblink);
if (!$select_db) {
    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
    echo "<script-x language='JavaScript-x'>alert('MySQL DB 를 확인해 주십시오.');history.back();</script-x>";
    exit;
}
?>

식으로 추가 합니다.


ⓑ 2차 수정
 
186 행에 보시면
// 그누보드 테이블 생성 end --------------------------------
*/

/*
$str = implode("", file("../common.php"));
$filename = "db" . substr(md5(uniqid("")),0,8) . ".php";
$str = str_replace("dbconfig.php", $filename, $str);
$f = fopen("../common.php", "w");
fputs($f, $str);
fclose($f);
*/

// 테이블 생성 ------------------------------------
$file = implode("", file("./sql_gnuboard4.sql"));
eval("\$file = \"$file\";");

$f = explode(";", $file);
for ($i=0; $i<count($f); $i++) {
    if (trim($f[$i]) == "") continue;
    mysql_query($f[$i]) or die(mysql_error());
}
// 테이블 생성 ------------------------------------

echo "<script-x>document.frminstall2.job1.value='전체 테이블 생성중';</script-x>";
flush(); usleep(50000);

// 우편번호 INSERT

부분이 있는데. 그 부분을 찾아.

// 테이블 생성 ------------------------------------
$file = implode("", file("./sql_gnuboard4.sql"));
eval("\$file = \"$file\";");

바로 위에
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가



// 그누보드 테이블 생성 end --------------------------------
*/

/*
$str = implode("", file("../common.php"));
$filename = "db" . substr(md5(uniqid("")),0,8) . ".php";
$str = str_replace("dbconfig.php", $filename, $str);
$f = fopen("../common.php", "w");
fputs($f, $str);
fclose($f);
*/

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
// 테이블 생성 ------------------------------------
$file = implode("", file("./sql_gnuboard4.sql"));
eval("\$file = \"$file\";");

$f = explode(";", $file);
for ($i=0; $i<count($f); $i++) {
    if (trim($f[$i]) == "") continue;
    mysql_query($f[$i]) or die(mysql_error());
}
// 테이블 생성 ------------------------------------

echo "<script-x>document.frminstall2.job1.value='전체 테이블 생성중';</script-x>";
flush(); usleep(50000);

// 우편번호 INSERT

식으로 삽입 합니다.

ⓒ 3차 수정
 
240 행을 찾아 보시면

$read_point = -1;
$write_point = 5;
$comment_point = 1;
$download_point = -20;

//-------------------------------------------------------------------------------------------------
// config 테이블 설정
$sql = " insert into $g4[config_table]
            set cf_title = '그누보드4',

같은 부분이 있습니다.

그 부분을 찾으시어

//-------------------------------------------------------------------------------------------------
// config 테이블 설정
$sql = " insert into $g4[config_table]
            set cf_title = '그누보드4',

바로 위 부분에
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가


$read_point = -1;
$write_point = 5;
$comment_point = 1;
$download_point = -20;

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
//-------------------------------------------------------------------------------------------------
// config 테이블 설정
$sql = " insert into $g4[config_table]
            set cf_title = '그누보드4',

식으로 삽입 합니다.

ⓓ 4차 수정
 
312 행을 찾아 보시면

                mb_email_certify = '$g4[time_ymdhis]',
                mb_datetime = '$g4[time_ymdhis]',
                mb_ip = '$_SERVER[REMOTE_ADDR]'
                ";

@mysql_query($sql);

echo "<script-x>document.frminstall2.job2.value='DB설정 완료';</script-x>";
flush(); usleep(50000);

부분이 보이실 겁니다.

@mysql_query($sql);

echo "<script-x>document.frminstall2.job2.value='DB설정 완료';</script-x>";
flush(); usleep(50000);

바로 위에

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가



                mb_mailling = '1',
                mb_open = '1',
                mb_email_certify = '$g4[time_ymdhis]',
                mb_datetime = '$g4[time_ymdhis]',
                mb_ip = '$_SERVER[REMOTE_ADDR]'
                ";
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
@mysql_query($sql);

echo "<script-x>document.frminstall2.job2.value='DB설정 완료';</script-x>";
flush(); usleep(50000);

같은 방식으로 삽입 합니다.


ⓔ 5차 수정
 
다시 그 아래 317 행을 살펴 보세요.
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
@mysql_query($sql);

echo "<script-x>document.frminstall2.job2.value='DB설정 완료';</script-x>";
flush(); usleep(50000);
//-------------------------------------------------------------------------------------------------

// DB 설정 파일 생성
$file = "../dbconfig.php";
$f = @fopen($file, "w");

fwrite($f, "<?\n");
//fwrite($f, "if (!preg_match('/^'.str_


부분이 보이실 겁니다.

찾으셧다면

// DB 설정 파일 생성
$file = "../dbconfig.php";
$f = @fopen($file, "w");

fwrite($f, "<?\n");

바로 위에

@mysql_query("set names utf8"); // 한글문제해결을위하여 추가



echo "<script-x>document.frminstall2.job2.value='DB설정 완료';</script-x>";
flush(); usleep(50000);
//-------------------------------------------------------------------------------------------------
@mysql_query("set names utf8"); // 한글문제해결을위하여 추가
// DB 설정 파일 생성
$file = "../dbconfig.php";
$f = @fopen($file, "w");

fwrite($f, "<?\n");
//fwrite($f, "if (!preg_match('/^'.str

방식으로 삽입 합니다.

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

여담..

mysql 5 부터 utf-8 이 아니라 utf8로 바뀌었습니다. euc-kr도 euckr로 바뀌었구요... 따라서 db 환경이나 db 테이블 생성 같은 경우에는 utf8이나 euckr을 써야 하고 php나 apache에서는 그대로 utf-8이나 euc-kr로 써야 합니다... 서버 구축시 의외로 이 부분에서 많은 분들이 실수를 하시더군요...

그렇다고 config.php 파일에서
$g4[charset] = "UTF-8";
이부분을 utf8 로 수정하는것은 하지 마세요...
이부분은 아파치에서 담당하니까 서버마다 다를수도 있어요...

UTF-8 이냐, utf-8 이냐, 아니면 utf8 이냐 하는것은,

apache 의 http.conf 에서는 UTF-8 을
php 의 php.ini 에서는 utf-8 을
mysql 의 my.ini 에서는 utf8 을

사용하시면 됩니다....
추천
0

댓글 3개

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=2497
에 첨부된 파일은.. 구 그누 버전 이므루.. 최신 버전 에 맞게 올린 겁니다..-.- 돌멩이 던지지 마세요~ 아파요~삭제 요청 하심.. 지울게요~.. 걍 첨부파일만.. 때려 넣으시기를-.-
전체 5 |RSS
그누4 팁자료실 내용 검색

회원로그인

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