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

관리자가 회원 아이디 수정가능하게 하려면 채택완료

마일드스카이 3년 전 조회 2,423

아이디는 포인트나 게시판 모든 아이디 등 변경해야할 부분이 많아서

기본적으로 변경 불가능한걸로 아는데요. 

그런거 다 무시하고 아이디 변경이 가능하게 하고 싶습니다.

검색해보니 어느 회원분께서 아이디변경 플러그인을 올리셨던데

써보려 했더니 지금은 다운로드가 안되네요ㅠㅠ 

 

회원관리용으로만 사용중이라 아이디 변경해도 괜찮습니다.

최고관리자나, 부운영자가 회원의 id를 변경할 수 있게 하려면

어떻게 수정해야하는지 도움 부탁드립니다. 

 

 

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

답변 3개

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

뭐가 어려울게 있나요?

현재 아이디/변경 아이디 입력해서 아이디를 바꾸는 코드 한 줄이면 되는데요

중복 아이디 체크/ 변경 후 이동 페이지 설정만 해주면 될텐데...

</p>

<p>adm/member_form.php에서 아이디 옆에 버튼생성</p>

<p><button type='button' onclick="location.href=id_change.php?mb_id=<?=$mb['mb_id']?>">아이디변경</button></p>

<p> </p>

<p>id_change.php</p>

<p><?php</p>

<p>include "_common.php";</p>

<p>if(!$is_admin) die('권한없음');</p>

<p>if($wk=='u' && $mb_id && $new_id){</p>

<p>  $row=sql_fetch("select count(*) as cnt from {$g5['member_table']} where mb_id='$mb_id' ");

  if(!$row['cnt']) alert('존재하지 않는 아이디');</p>

<p>  $row=sql_fetch("select count(*) as cnt from {$g5['member_table']} where mb_id='$new_id' ");</p>

<p>  if($row['cnt']) alert('이미 존재하는 아이디');</p>

<p>  sql_query("update {$g5['member_table']} set mb_id='$new_id' where mb_id='$mb_id' ");</p>

<p>  alert('변경되었습니다', G5_ADMIN_URL."/member_form.php?w=u&mb_id=$new_id");</p>

<p>}</p>

<p>?></p>

<p><h3>아이디 변경</h3></p>

<p><form name='tmp' methos='post'></p>

<p><input type='hidden' name='wk' value='u'></p>

<p>현재 아이디 <input type='text' name='mb_id' value='<?=$mb_id?>'></p>

<p>변경 아이디 <input type='text' name='new_id' value=''></p>

<p><input type='submit' value='변경하기'></p>

<p></form></p>

<p>=======================</p>

<p>포인트/게시물 등도 그누보드를 파악하고 있다면 어려울 것 없고 그누보드 소스들을 다룰 줄 모른다면</p>

<p>불가능 하겠지요</p>

<p>

 

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

답변에 대한 댓글 5개

마일드스카이
3년 전
안녕하세요 균이님 진심 감사드립니다.
변경이 잘 됩니다.
hwang에서 kim으로 변경 테스트했어요.

그런데 아래 url인 상태에서 변경되었다는 alert창이 뜬 후
adm/id_change.php?wk=u&dm_id=hwang&new_id=kim

확인을 누르면

adm/dmember_form.php?w=u&dm_id=kim
위 url로 변경되면서 존재하지 않는 아이디라는 alert창이 뜹니다.

다시 확인을 누르면 존재하지 않는 회원자료라고 뜹니다ㅠㅠ
이게 무한반복되네요.


전에 sir 개발자님께 의뢰해서 고객관리용으로 개조를 한건데
회원테이블은 data_members 이고 아이디 함수는 dm_id 에요.
회원수정폼은 dmember_form.php 고요.

php 문외한이지만, sir에서 조금씩 줏어들은걸로
id_change.php는 알려주신 소스를 토대로 아래처럼
수정했어요.
아이디변경은 잘 되는데, 경고창과 url이 번갈아 무한반복됩니다ㅠㅠ

------------------------------------------------------------------------
<?php
include "_common.php";
if(!$is_admin) die('권한없음');
if($wk=='u' && $dm_id && $new_id){
$row=sql_fetch("select count(*) as cnt from data_members where dm_id='$dm_id' ");
if(!$row['cnt']) alert('존재하지 않는 아이디');
$row=sql_fetch("select count(*) as cnt from data_members where dm_id='$new_id' ");
if($row['cnt']) alert('이미 존재하는 아이디');
sql_query("update data_members set dm_id='$new_id' where dm_id='$dm_id' ");
alert('변경되었습니다', G5_ADMIN_URL."/dmember_form.php?w=u&dm_id=$new_id");
}
?>
<h3>아이디 변경</h3>
<form name='tmp' methos='post'>
<input type='hidden' name='wk' value='u'>
현재 아이디 <input type='text' name='dm_id' value='<?=$dm_id?>'>
변경 아이디 <input type='text' name='new_id' value=''>
<input type='submit' value='변경하기'>
</form>
-----------------------------------------------------------------------------------

변경후 확인버튼 누르면 다시 해당 회원의 dmember_form.php로 돌아가면
좋겠는데 어떻게 해야할지 모르겠네요.


혹시 몰라서 dmember_form.php 상단의 함수선언 몇줄 보여드릴께요.

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

<?php
$sub_menu = "200120";
include_once('./_common.php');

auth_check($auth[$sub_menu], 'w');

if ($w == '')
{
// $required_dm_id = 'required';
// $required_dm_id_class = 'required alnum_';
// $sound_only = '<strong class="sound_only">필수</strong>';

$dm = Array();
$dm['dm_in'] = 0;
$html_title = '추가';
}
else if ($w == 'u')
{
$dm_uid = (int)$dm_uid;

//if ($is_admin == 'super')
$dm = sql_fetch("select * from `data_members` where `dm_uid`='{$dm_uid}' and `dm_delete`='0' ");
//else
//$dm = sql_fetch("select * from `data_members` where `dm_uid`='{$dm_uid}' and `dm_delete`='0' and `dm_regist_mb_id`='" . $member['mb_id'] . "' ");

if (!$dm['dm_uid'])
alert('존재하지 않는 회원자료입니다.');

$html_title = '수정';

$dm['dm_inpath'] = get_text($dm['dm_inpath']);
$dm['dm_company'] = get_text($dm['dm_company']);
$dm['dm_folder'] = get_text($dm['dm_folder']);
$dm['dm_name'] = get_text($dm['dm_name']);
$dm['dm_nick'] = get_text($dm['dm_nick']);
$dm['dm_tel'] = get_text($dm['dm_tel']);
$dm['dm_1'] = get_text($dm['dm_1']);
$dm['dm_2'] = get_text($dm['dm_2']);
$dm['dm_3'] = get_text($dm['dm_3']);
$dm['dm_4'] = get_text($dm['dm_4']);
$dm['dm_5'] = get_text($dm['dm_5']);
$dm['dm_6'] = get_text($dm['dm_6']);
$dm['dm_7'] = get_text($dm['dm_7']);
$dm['dm_8'] = get_text($dm['dm_8']);
$dm['dm_9'] = get_text($dm['dm_9']);
$dm['dm_10'] = get_text($dm['dm_10']);
}
else
alert('제대로 된 값이 넘어오지 않았습니다.');

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

이렇게 되있습니다.
그 개발자님하고 연락이 잘 안되서 php 초짜가 하려니 힘드네요^^:

어제 밤늦게까지 놀다가 집에와서 기절했다가 깨서 이제서야
댓글 답니다.

고맙습니다(__)
균이
3년 전
이건 뭐 그누보드와 전혀 다른 테이블이네요
$dm_uid = (int)$dm_uid; <---$dm_uid가 회원 테이블에서의 번호 같은데 이 값을 넘겨받지 않고
이 값으로 회원을 찾으니 아래 쿼리에서 해당 회원을 찾을 수가 없다고 나오는 것입니다

테이블 구조를 알 수 없으나 주석처리해놓은 코드로 추측 하건데 회원 아이디 필드명이
dm_regist_mb_id 같은데 <아이디 함수는 dm_id 에요>라는 설명이 있으니
아래처럼 수정해보세요
$dm = sql_fetch("select * from `data_members` where `dm_uid`='{$dm_uid}' and `dm_delete`='0' ");
--> 수정
$dm = sql_fetch("select * from `data_members` where dm_id='$dm_id' ");
마일드스카이
3년 전
네.. 기존 g5_member 테이블은 부운영자테이블이고 data_members는 일반 회원테이블로 사용중이에요ㅎ 알려주신대로 쿼리문을 수정했는데 이번엔 회원목록에서 정보수정을 누르니 존재하지않는 회원자료라고 뜨네요.

그래서 일단 되돌렸구요.

관리자모드에서 회원정보 수정을 누르면 url이 /dmember_form.php?sst=&sod=&sfl=&stx=&page=&w=u&dm_uid=21 이렇습니다. 기본 그누보드는 url 끝이 회원 아이디인데, 저희거는 회원번호(dm_uid)네요. 아마도 개발당시에 회원번호가 중요해서 그렇게 한듯 합니다.

기존 문서를 수정안하고 id_change.php에서는 안될까요?
귀찮게 해드리는거 같아 죄송합니다ㅠㅠ
균이
3년 전
이번에는 dm_uid가 넘어오고 dm_id는 넘어오지않는데 dm_id로 검색하니 없다고 나오는 것이네요
$dm = sql_fetch("select * from `data_members` where `dm_uid`='{$dm_uid}' and `dm_delete`='0' ");
--> 수정
if($dm_uid) $dm = sql_fetch("select * from `data_members` where `dm_uid`='{$dm_uid}' and `dm_delete`='0' ");
else if($dm_id) $dm = sql_fetch("select * from `data_members` where dm_id='$dm_id' ");
else alert('회원구분 정보가 없음');
마일드스카이
3년 전
균이님 감사합니다. 잘 해결되었습니다.
아이디변경건에 대해 sir에 자료가 거의 없는데, 다른 분들에게도 큰 도움이 될 것 같습니다^^

근데 옛날 제로보드4 커뮤니티에서도 활동하지 않으셨나요?
왠지 닉네임이 낯익어서요^^

새해 복 많이 받으시고 행복하세요! 감사합니다!

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

 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 그누 보드는  $w 라는 변수에  빈공간이나

영어 u 를 이용해서 작동되게 하지만

저는 거기에 영어 x 라는 조건을 더해서 코딩한 것 입니다

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

 

위 이미지를 보고 이해가 문제 해결이 안된다면 

https://sir.kr/gujik/1154  여기에 저의 연락처가 있습니다 

핸드폰으로 연락주시면 같이 고민해 드릴게요

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

답변에 대한 댓글 1개

마일드스카이
3년 전
감사합니다 많은 도움이 되었습니다.
새해 복 많이 받으세요!

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

3년 전

관리자가 변경한다면 phpmyadmin에서(DB에서) 바로 변경해 주는 것이 편할 것 같습니다.

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

답변에 대한 댓글 1개

마일드스카이
3년 전
마젠토님 감사합니다. 근데 부운영자도 변경가능했으면 해서요ㅠㅠ
관리자모드에서 수정되면 좋은데 어렵네요.
감사합니다.

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

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

로그인