테스트 사이트 - 개발 중인 베타 버전입니다

게시판삭제 관련 질문입니다. 채택완료

망이망소이 5년 전 조회 2,356

회원에게 회원ID와 동일한 명칭의 게시판을 생성해줬다가

회원탈퇴시에 생성해줬던 게시판과 파일/폴더들도 다 함께 자동으로 지워지게 하고자하여

아래와 같이 해봤습니다.

 

/adm/board_delete.inc.php 입니다.

</p>

<p><?php

// board_delete.php , boardgroup_delete.php 에서 include 하는 파일</p>

<p>if (!defined('_GNUBOARD_')) exit;

if (!defined('_BOARD_DELETE_')) exit; // 개별 페이지 접근 불가</p>

<p>// $tmp_bo_table 에는 $bo_table 값을 넘겨주어야 함

if (!$tmp_bo_table) { return; }</p>

<p>// 게시판 1개는 삭제 불가 (게시판 복사를 위해서)

//$row = sql_fetch(" select count(*) as cnt from $g5['board_table'] ");

//if ($row['cnt'] <= 1) { return; }</p>

<p>// 게시판 설정 삭제

sql_query(" delete from {$g5['board_table']} where bo_table = '{$tmp_bo_table}' ");</p>

<p>// 최신글 삭제

sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$tmp_bo_table}' ");</p>

<p>// 스크랩 삭제

sql_query(" delete from {$g5['scrap_table']} where bo_table = '{$tmp_bo_table}' ");</p>

<p>// 파일 삭제

sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$tmp_bo_table}' ");</p>

<p>// 게시판 테이블 DROP

sql_query(" drop table {$g5['write_prefix']}{$tmp_bo_table} ", FALSE);</p>

<p>delete_cache_latest($tmp_bo_table);</p>

<p>// 게시판 폴더 전체 삭제

rm_rf(G5_DATA_PATH.'/file/'.$tmp_bo_table);

?></p>

<p>

게시판 삭제시 삭제하는 게시판관련된 파일들과 폴더까지 지우는 부분인것 같아서

이중 일부를

회원탈퇴처리시 탈퇴하는 회원ID와

같은ID의 게시판을 지우는 것에 사용하려고

다음과 같이 적용해봤습니다. 

 

/bbs/member_leave.php

</p>

<p><?php

include_once('./_common.php');</p>

<p>if (!$member['mb_id'])

    alert('회원만 접근하실 수 있습니다.');</p>

<p>if ($is_admin == 'super')

    alert('최고 관리자는 탈퇴할 수 없습니다');</p>

<p>if (!($_POST['mb_password'] && check_password($_POST['mb_password'], $member['mb_password'])))

    alert('비밀번호가 틀립니다.');</p>

<p>// $tmp_bo_table 에는 $bo_table 값을 넘겨주어야 함</p>

<p> </p>

<p>################### 추가한 부분 ###################</p>

<p>탈퇴하는 회원의 아이디와 일치하는 게시판을 찾아 지워주려고....</p>

<p>################### 추가한 부분 ###################</p>

<p>

if (!$member['mb_id']) { return; }</p>

<p>// 게시판 설정 삭제

sql_query(" delete from {$g5['board_table']} where bo_table = '{$member['mb_id']}' ");</p>

<p>// 최신글 삭제

sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$member['mb_id']}' ");</p>

<p>// 스크랩 삭제

sql_query(" delete from {$g5['scrap_table']} where bo_table = '{$member['mb_id']}' ");</p>

<p>// 파일 삭제

sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$member['mb_id']}' ");</p>

<p>// 게시판 테이블 DROP

sql_query(" drop table {$g5['write_prefix']}{$member['mb_id']} ", FALSE);</p>

<p>delete_cache_latest($member['mb_id']);</p>

<p>// 게시판 폴더 전체 삭제

rm_rf(G5_DATA_PATH.'/file/'.$member['mb_id']);</p>

<p> </p>

<p>################### 추가한 부분 ###################</p>

<p>탈퇴하는 회원의 아이디와 일치하는 게시판을 찾아 지워주려고....</p>

<p>################### 추가한 부분 ###################</p>

<p> </p>

<p> </p>

<p>// 회원탈퇴일을 저장

$date = date("Ymd");

$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}' where mb_id = '{$member['mb_id']}' ";

sql_query($sql);</p>

<p>// 3.09 수정 (로그아웃)

unset($_SESSION['ss_mb_id']);</p>

<p>if (!$url)

    $url = G5_URL;</p>

<p>//소셜로그인 해제

if(function_exists('social_member_link_delete')){

    social_member_link_delete($member['mb_id']);

}</p>

<p>alert(''.$member['mb_nick'].'님께서는 '. date("Y년 m월 d일") .'에 회원에서 탈퇴 하셨습니다.', $url);

?></p>

<p>

 

결과는 

DB에서 g5_write_...

테이블명까지는 잘 삭제됩니다. 

그리고 먹통이 됩니다만...

고수님들 한번 봐주시고 도와주세요~

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

답변 1개

채택된 답변
+20 포인트
Policia
5년 전

해당 삭제 쿼리마다 echo 1;이런식으로 하나씩 넣어보세요 어느부분에서 에러나는지 파악이 먼저 인것같네요

 

드랍테이블까진 잘된다고했으니 뒤이어서오는 delete_cache_latest가 의심되긴하는데... 혹시모르니 delete_cache_latest아래로 echo 1한번씩찍어서 어디까지 실행이 되는지 체크해보는게 좋을것같네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

망이망소이
5년 전
// 1게시판 설정 삭제
sql_query(" delete from {$g5['board_table']} where bo_table = '{$member['mb_id']}' "); //관리자board리스트에서 제거:OK
// 2최신글 삭제
sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$member['mb_id']}' "); //최신글삭제
// 3스크랩 삭제
sql_query(" delete from {$g5['scrap_table']} where bo_table = '{$member['mb_id']}' "); //스크랩삭제
// 4파일 삭제
sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$member['mb_id']}' ");//파일삭제
// 5게시판 테이블 DROP
sql_query(" drop table g5_write_{$member['mb_id']} ");
// 6게시판 폴더 전체 삭제
rmdir(G5_DATA_PATH."/file/".$member['mb_id']);
P
Policia
5년 전
아 맞다 echo 보단

sql_query($sql, true)로주고 에러로그를 확인해보세요

6번이 안된다면 에러로그 true주고 에러로그를 살펴봐야겠네요

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

답변을 작성하려면 로그인이 필요합니다.

로그인