회원 아이디 변환기 > 그누4 팁자료실

그누4 팁자료실

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

회원 아이디 변환기 정보

회원 아이디 변환

첨부파일

id_exchange.zip (1.2K) 61회 다운로드 2009-01-30 21:59:09

본문

안녕하세요.
회원의 아이디를 변환해 주는 프로그램 입니다.
php 파일 1개 짜립니다.

일단 소스 갑니다.
id_exchange.php (압축파일에 소스 있어요.)
-----------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>회원 아이디 허접 변환기</title>
</head>
<body>
<?
$g4_path = ".."; // common.php 의 상대 경로
include_once("$g4_path/common.php");
// initialize or capture variable
if($is_admin!='super')
    alert("최고관리자만 접근 가능합니다.");

$id_from    = !isset($_POST['ID_FROM'])? NULL : $_POST['ID_FROM'];
$id_to        = !isset($_POST['ID_TO'])? NULL : $_POST['ID_TO'];
?>

<h2>회원 아이디 허접 변환기 -_-;</h2>
<form method="post" action="id_exchange.php" id="id_exchange">
<div>
    <input type="text" name="ID_FROM" value="<?=$id_from?>" /> 이것을<br />
    <input type="text" name="ID_TO" value="<?=$id_to?>" /> 으로 바꿈<br />
    <input type="submit" value="확인" />
</div>
</form>
<div>
<?
// 바뀌게될 아이디과 바꿀 아이디가 모두 입력 되었으면 실행
if($id_from!='' && $id_to!=''){
    mysql_query("UPDATE `g4_member` SET `mb_id` = '".$id_to."' WHERE `mb_id` = '".$id_from."' LIMIT 1;");

    // 게시판 반복 적용
    $tmp=mysql_query("SELECT `bo_table` FROM `g4_board`");
    while($row=mysql_fetch_array($tmp))
    {
        mysql_query("UPDATE `g4_write_".$row['bo_table']."` SET `mb_id` = '".$id_to."' WHERE `mb_id` = '".$id_from."';");
    }
   
    // 그외 테이블 적용
    mysql_query("UPDATE `g4_board`        SET `bo_admin` = '".$id_to."'    WHERE `bo_admin` = '".$id_from."';");
    mysql_query("UPDATE `g4_board_good` SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_board_new`    SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_config`        SET `cf_admin` = '".$id_to."'    WHERE `cf_admin` = '".$id_from."';");
    mysql_query("UPDATE `g4_group`        SET `gr_admin` = '".$id_to."'    WHERE `gr_admin` = '".$id_from."';");
    mysql_query("UPDATE `g4_group_member` SET `mb_id` = '".$id_to."'    WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_login`        SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_memo`        SET `me_send_mb_id` = '".$id_to."' WHERE `me_send_mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_memo`        SET `me_recv_mb_id` = '".$id_to."' WHERE `me_recv_mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_point`        SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_point`        SET `po_rel_id` = '".$id_to."'    WHERE `po_rel_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_poll_etc`    SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");
    mysql_query("UPDATE `g4_scrap`        SET `mb_id` = '".$id_to."'        WHERE `mb_id` = '".$id_from."';");

    echo $id_from."(을)를 ".$id_to."(으)로 변환했습니다.";
}
else
{
    echo "입력해주세요.";
}
?>
</div>
</body>
</html>
-----------------------------------------------

간단하게 말하자면 aaa라는 회원의 아이디를 bbb로 고쳐줍니다.

-- 잡설 시작 --
제가 운영하는 곳에서 오픈아이디를 필수적으로 시행하고자 기존 회원의 아이디를 모두 오픈아이디로 바꾸는 과정에서 db안에 있는 모든 아이디 값을 바꿔야하는 경우가 생겼습니다.
어떻게 보면 비 효율적인 행동인데, 저는 그렇게 하고 싶더라고요.

아이디를 바꾸려면 db안의 모든 아이디 값을 바꾸면 되는 것이지, 그것이 아예 불가능 한 일은 아니니까요. 그렇게 하기로 했습니다.


이 프로그램은 수동으로 바꿔주지만 수정하시면 사용자가 직접 아이디를 바꿀 수도 있게 할 수 있습니다. 자동식이죠. 하지만 저와 같이 로그인 시스템을 오픈아이디로 바꾸거나 사이트 통합 과정에서 아이디 통합 교체가 필요한 특수한 경우를 제외하고는 회원이 직접 본인의 아이디를 수정하는 것은 뭐 그렇게 추천할 만한 건 아니지요.

저도 오픈아이디로 로그인한 회원이 다시 제 사이트에 기존 시스템으로 로그인 하고 확인 과정을 통과한 후에 자동으로 오픈아이디로 바뀌도록 했습니다. 거기서 회원 아이디를 바꿔주는 부분만 따로 빼서 수동식으로 만든 것이고요.
--잡설 끝--

안전장치가 없기 때문에 사용시 주의하세요.
만일, aaa라는 아이디를 bbb로 고쳐야 하는데, ccc로 고쳤다면
프로그램을 다시 실행해서 ccc를 bbb로 고치면 됩니다.;

파일명 수정하시면 소스 안에 수정하는 부분 한군데 있습니다.
본인의 계정에 맞게 테이블이나 필드값 지정해서 사용하세요.
본 소스는 제가 사용하는 db상태에서 그누보드 기본 제공 부분만 빼온 것이라 여러분의 상태와 다를 수 있습니다. 기본적으로 게시판에서 글쓴이 같은건 모두 바뀌고요. 그외 그본적으로 생기는 테이블도 써놨습니다.

포인트 경매와 같이 특수한 게시판에는 반드시 추가사항 있으니 확인하시고요.


말이 그렇지 이 소스는 단순히 aaa를 bbb로 고치는 것이라 잘못 바꾸거나 누락된 경우가 있더라도 내역만 기억하면 얼마든지 다시 원상 복구 할 수 있습니다.

가령, db안에 aaa 5개를 bbb로 고쳤다고 해보죠. 근데, 테이블 확인을 못해서 미처 바꾸지 못한 aaa가 5개 또 있다고 해보죠. 그러면 일단 짜증나죠. -_- 이때에는 침착하게 소스를 여시고 미처 바뀌지 않은 테이블을 추가만 해주면 됩니다. 그리고 다시 실행해주면 나머지 aaa를 bbb로 바꿔줍니다.

여튼 안전장치가 없고 따로 db에 내역을 기록하는 것이 아니기 때문에 신중히 사용해 주시면 되겠습니다. 아마 대부분 쓰실일이 없을 거예요. 저 같은 특수한 상황에 처해 있으신 분이 혹시 있을까 올려봅니다. 찾아보니 관련팁이 없는 것 같더라고요.

저는 실제로 이 기본 소스에 제 db 환경에 맞게 몇개를 추가하여 사용하고 있습니다. 한동안은 아이디 교체 작업을 수동으로 해야할것 같아서 이번에 따로 만들었고 필요한 분 계실지 몰라 올려봅니다.

말이 너무 길군요. 마칩니다.

아, 정말 사용시에는 신중을 기해주세요. 원상복구 됩니다만, 잘못되도 제 책임 아닙니다...
추천
7
  • 복사

댓글 3개

좋군요... 추천 날립니다.
이 기회에 오픈아이디가 좀 더 활성화되고 또 기존 아이디도 오픈아이디로 바뀌는 계기가 되길 바라며...
무엇보다도... 로그인 스킨에 오픈아이디가 지원되는 스킨이 많이 보급되길 기대해 봅니다.^^
© SIRSOFT
현재 페이지 제일 처음으로