w

게시판 글들을 하나씩 html로 저장 (개인 메모용으로 로컬에서 그누보드 사용시)

· 14년 전 · 4561

to_home.php 및 save_to_html.php 파일을 gnuboard4 밑에 만들어줍니다.
 
그런뒤 해당 게시판 설정 에서 상단(또는 하단) 파일 경로를 '../to_home.php'로 지정합니다.
 
이렇게하면 각 게시판 상단(또는 하단에) 'Home', 'Save Txts' 버튼이 생성되고, 'Save Txts'버튼을
클릭하면 'gnuboard4/my_savtxt_게시판명' 으로 폴더가 생성된이후
이 게시판의 모든 글들이 생성된 폴더 내에 모두 저장됩니다.
 

좀 무식하지만, 게시판 글들을 text로(html)로 백업하는데는 유용합니다^^
물론 MySQL DB를 백업하는 방법도 있는것 같습니다만.. text로 글을 하나씩 백업하는것도 나름 유용할겁니다.
 
전 그누보드/php 초보라 글을 파일로 저장하는 다른분의 대략적인 코드를 보고
아래 php들을 만들면서, 특히 한글 깨지는 문제 및
php로 게시판명 전달하는 방법에서 해결방법을 찾는데 시간이 많이 들더군요.
 
 
to_home.php 내용:
<a href="<?=$g4['path']?>/">[Home]</a>
<a href="<?=$g4['path']?>/save_to_html.php?<?=$bo_table?>">[Save Txts]</a>
 

save_to_html.php 내용:
<?
  unset($bname);  // 내용clear
  list($bname) = each($_GET); // 이전 php에서 호출할때 게시판명을 argument로 전달해준것을 받음
 
  if($bname == ""){
    printf(" Error save_to_html bname= " . $bname . "\r\n");
    exit;
  }
 
  printf(" .bname= [" . $bname . "]\r\n");
 
  $sdir = "my_savtxt_" . $bname; // 저장할 폴더명 변수처리
  if(!is_dir($sdir)){
    @mkdir($sdir,0777); // 폴더없으면 생성
    printf(" .made directory [" . $sdir . "]\r\n");
  }
  else{
    //printf(" .already exist directory [" . $sdir . "]\r\n");
  }
 
  $conn = mysql_connect('localhost','ID','PASSWORD');  <-- 이부분은 본인 id, pw 입력
 
  mysql_query("SET NAMES UTF8"); // MySQL 읽고 쓸때는 utf8로 해야 한글 깨짐을 방지
 
  $db_status = mysql_select_db('DB명');  <-- 해당 DB명
  if (!$db_status) {
    error("DB_ERROR");
    exit;
  }
 
  //$query = "select * from g4_write_게시판명";
  $query = "select * from g4_write_" . $bname; // 게시판명 변수 처리
 
  $result = mysql_query( $query );
 
  $ii = 1;
  while( $row = mysql_fetch_row($result)) {
    $rowsd = $sdir . "/file_" . sprintf("%05d", $ii) . ".html";  // 폴더명 변수처리, 파일명 seq 변수처리
    $ops = fopen($rowsd,w);
 
    $row[9]  = iconv( 'UTF-8', 'EUC-KR', $row[9]);  // 텍스트파일 저장시는
    $row[10] = iconv( 'UTF-8', 'EUC-KR', $row[10]); // euc-kr로 저장해야 vi 등에서 잘 볼수있음
 
    fputs ($ops,$row[9] . "\r\n\r\n" . $row[10]); // 제목(row[9]), 내용(row[10])
 
    fclose($ops);
 
    printf(" [$ii]");
 
    $ii++;
  }
 
  printf(" .saved text-files to [" . $sdir ."]\r\n");
?>
|

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고