그누보드 회원 여분필드를 이용하여 백업정보를 입력 하려면...? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

그누보드 회원 여분필드를 이용하여 백업정보를 입력 하려면...? 정보

그누보드 회원 여분필드를 이용하여 백업정보를 입력 하려면...?

본문

우선 아래 소스가 백업을 진행하는 소스 입니다.

mysql 정보 입력 부분에 각 회원별로 mb_3(아이디), mb_4(비밀번호) 필드값을 이용하여 입력하려고 합니다..

$mysql_db = $mb_4; 이런식으로요...

우선 맨 상단에 common 파일을 로드해와야 할 것 같은데...ㅠㅠ

이것저것 복잡하네요...

제가 구현하고자 하는것은... 회원별로 로그인 뒤 아래코드를 실행시키면 그 회원의 db를 백업시키는 작업입니다.. 힘들까요..?


<?
$mysql_host = "localhost"; // 호스트정보
$mysql_db = ""; // 백업할 DB명
$mysql_user = ""; // 사용자 아이디
$mysql_pass = ""; // 사용자 비번

 

$fileName = date("Y_m_d_H_i"); //백업받을 파일명
$extention = "sql"; // 백업 받을 파일 확장자

 

$all = false; //완전한 Insert 문을 작성하려면 true
$drop = false; //drop table 구문을 포함하려면 true

 

mysql_connect( $mysql_host, $mysql_user, $mysql_pass ) || die("데이타 베이스 접속에 실패하였습니다.");
mysql_select_db( $mysql_db ) || die("DB 접속 실패");

 

function bak_getTableNames($db) {
 $result[0] = mysql_list_tables($db);
 $result[1] = mysql_num_rows($result[0]);
 return $result;
}

 

function bak_getFields($table) {
 global $all;
 $result = mysql_query("show fields from $table");
 $i = 0;
 while($keys = mysql_fetch_array($result)) {
  if(!$i) $defaultOrder = $keys[Field];
  if($keys[Key] == 'PRI') {
   $orderby = $keys[Field];
   break;
  }
  $i++;
 }
 if(!$orderby) $orderby = $defaultOrder;
 $result = mysql_query("select * from $table order by $orderby");
 $nums = mysql_num_fields($result);
 if($all == true) {
  for($i=0;$i<$nums;$i++) {
   $fields[] = mysql_field_name($result,$i);
  }
  $fields = "(".implode(",",$fields).") ";
 }
 while($rows = mysql_fetch_row($result)) {
  for($i=0;$i<$nums;$i++) {
   $insertValues[$i] = $rows[$i];
  }
  $return .= "INSERT INTO $table ".$fields."values ('".implode("','",$insertValues)."');\n";
 }
 return $return;
}

 

$tables = bak_getTableNames($mysql_db);
if($tables[1] > 0) {
 $backText = "
# MysqlDump
# 호스트: ".$mysql_host."
# 처리한 시간: ".date('Y년 n월 j일 H시 i분')."
# 서버 버전: ".mysql_get_server_info()."
# 데이터베이스 : `".$mysql_db."`
# --------------------------------------------------------\n\n\n\n\n";
 while($rows = mysql_fetch_row($tables[0])) {
  $backText .= "
#
# 테이블 구조 `".$rows[0]."`
#\n\n";
  $skima = mysql_fetch_array(mysql_query("SHOW CREATE TABLE ".$mysql_db.".".$rows[0]));
  if($drop == true) $backText .= "DROP TABLE IF EXISTS ".$skima[0].";\n\n";
  $backText .= "CREATE TABLE if not exists ".$skima[0]." ";
  $pos = strpos($skima[1]," (");
  $backText .= str_replace("`","",substr($skima[1],($pos+1))).";";

 

  $insert = bak_getFields($rows[0]);
  $backText .= "
#
# 테이블 '".$rows[0]."' insert 문
#";
  if($insert) $backText .= "\n\n\n".$insert;
  $backText .= "\n\n\n\n\n";
 }

 

 header("Content-Type: application/octetstream");
 header("Content-Disposition: attachment; filename=".$fileName.".".$extention);
 header('Expires: 0');
 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 header('Pragma: public');
 echo $backText;
}
?>

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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