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

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

QA

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

본문

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

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

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

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

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

 

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

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

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

 

 

이 질문에 댓글 쓰기 :

답변 3

뭐가 어려울게 있나요?

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

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


adm/member_form.php에서 아이디 옆에 버튼생성
<button type='button' onclick="location.href=id_change.php?mb_id=<?=$mb['mb_id']?>">아이디변경</button>
 
id_change.php
<?php
include "_common.php";
if(!$is_admin) die('권한없음');
if($wk=='u' && $mb_id && $new_id){
  $row=sql_fetch("select count(*) as cnt from {$g5['member_table']} where mb_id='$mb_id' ");
  if(!$row['cnt']) alert('존재하지 않는 아이디');
  $row=sql_fetch("select count(*) as cnt from {$g5['member_table']} where mb_id='$new_id' ");
  if($row['cnt']) alert('이미 존재하는 아이디');
  sql_query("update {$g5['member_table']} set mb_id='$new_id' where mb_id='$mb_id' ");
  alert('변경되었습니다', G5_ADMIN_URL."/member_form.php?w=u&mb_id=$new_id");
}
?>
<h3>아이디 변경</h3>
<form name='tmp' methos='post'>
<input type='hidden' name='wk' value='u'>
현재 아이디 <input type='text' name='mb_id' value='<?=$mb_id?>'>
변경 아이디 <input type='text' name='new_id' value=''>
<input type='submit' value='변경하기'>
</form>
=======================
포인트/게시물 등도 그누보드를 파악하고 있다면 어려울 것 없고 그누보드 소스들을 다룰 줄 모른다면
불가능 하겠지요

 

안녕하세요 균이님 진심 감사드립니다.
변경이 잘 됩니다.
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 초짜가 하려니 힘드네요^^:

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

고맙습니다(__)

이건 뭐 그누보드와 전혀 다른 테이블이네요
 $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' ");

네.. 기존 g5_member 테이블은 부운영자테이블이고 data_members는 일반 회원테이블로 사용중이에요ㅎ 알려주신대로 쿼리문을 수정했는데 이번엔 회원목록에서 정보수정을 누르니 존재하지않는 회원자료라고 뜨네요.

그래서 일단 되돌렸구요.

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

기존 문서를 수정안하고 id_change.php에서는 안될까요?
귀찮게 해드리는거 같아 죄송합니다ㅠㅠ

이번에는 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('회원구분 정보가 없음');

균이님 감사합니다. 잘 해결되었습니다.
아이디변경건에 대해 sir에 자료가 거의 없는데, 다른 분들에게도 큰 도움이 될 것 같습니다^^

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

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

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

2084452681_1644052783.5824.png

2084452681_1644052908.0388.png

2084452681_1644052935.8783.png

2084452681_1644053190.4803.png

 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

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

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

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

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

 

2084452681_1644053075.6027.png

2084452681_1644053124.4524.png

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 425
QA 내용 검색

회원로그인

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