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

회원 아이디를 숫자로 바꾸는게 막막하네요.

· 1개월 전 · 203 · 9

위에서 이상한 지시가 내려와서는 회원아이디 노출되는걸 랜덤 숫자로 나올수있게해서

 

아이디는 오로지 로그인할때만 사용되고 그외는 회원은 랜덤숫자로 아이디 노출을 막으라는걸

하라는데 개발자도아니고 -_-;; 업체다 의뢰하라니깐 그건또 싫다네요

 

나참!!!! 내서버 사용하면서 바라는것도많고 이거이거 고민고민해보다가 안되면

 

걍 돈주고 전문가한테 의뢰하라고 해야겠습니다. 단순히 업로드하고 다운로드만 할줄아는 사람한테 전문가 영역으로만드니까

답이없네요 저한테는 ㅠㅠ

댓글 작성

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

로그인하기

댓글 9개

베스트 댓글

1개월 전 BEST

난이도가 아니라 분량이 장난 없을텐데...라는 생각이..

이토랜드가 그 방식을 쓰거든요...

원댓글 보기 →
1개월 전

난이도가 아니라 분량이 장난 없을텐데...라는 생각이..

이토랜드가 그 방식을 쓰거든요...

1개월 전

@미니님a 이래저래 방법만 구상하고있는데 보니까 이건 일반인이 할수있는 영역이 아니더라구요 ㅜㅜ 그래서 전문가한테 요청해서 의뢰해야할꺼같아요

1개월 전

얼핏 들어도 머리가 많이 아파올 작업일거 같은데요 

고생이 많으세요 ^^;;

 

그누보드인데 맏기셔야 한다면 여기서 커뮤니티와 의뢰를 오래 활동하시던 분하고 작업하시는게 좋을듯 합니다

분명 다 되어도 어딘가에서 툭~ 튀어 나와서 손을 봐야할 사항이

분명 생길거예요 즉 후속타가 있을테니 그에 대한 손봄이 필히 있어야 합니다

 

그나저나 시린님 이번일 하시면 아마 다음번에도 그런류의 일은 쭈우~욱 

맡기려 들련지도 모르겠습니다 

아이디 변경건 보다 일을 맡긴 의도에 담긴 것이 더 신경이  쓰이시겠어요

 

1개월 전

@예뜨락 아마도 그누에서 올리던가할꺼같아요 맨날 몰라서 

질문올려놓고 답변보고 해결하는데 그걸가지고 이렇게 하라는건 제가 할수가없는 영역이라!!!!

 

이래저래 귀찮게하면 서버 에서 방빼라하고 단독으로써야죠 이제!!

아주 오래전에 당근에서 저렴하게 구매한 서버 지금까지도 아주 잘사용중에있는데 거기에 회사가 단칸방얻어 살고있는터라 하핫!!

1개월 전

여분필드에 임의의 숫자로된 아이디를 부여하고

기존 아이디가 표시되는 부분에 여분필드가 표시되도록 하시면 간단할것 같은데요? 

1개월 전

@똥싼너구리 이게또 전문지식있는분들이라면 간단하게 보일수도있는문제인데 이쪽 분야 사람이 아닌터라 그것마저도 넉넉지못하답니다

1개월 전

랜덤숫자보다는 회원가입일자로 숫자로 표현이 좋을듯 싶은데요

랜덤숫자로 할경우 체크를 한번해야 하기때문에 회원가입일자를 초로 환산하여 하면 될듯~

 

<?php
function generate10DigitId() {
    // 마이크로초 기반 고유 숫자
    $micro = microtime(true); // 예: 1695543620.123456

    // 초 + 마이크로초를 합쳐서 정수로 변환
    $raw = (int)($micro * 1000000); // 예: 1695543620123456

    // 10자리로 압축: 마지막 10자리만 사용
    $id = substr($raw, -10);

    return $id;
}

echo "10자리 고유 가입 ID: " . generate10DigitId();
?>

10자리 고유 가입 ID: 3620123456

1개월 전

@카이루 아 랜덤으로 써놓은건 뭐 고유번호 같은걸로 칭해서 그사람을 알수있는 번호로 할꺼라 써놓은것만 그렇게 해놨습니다.
머리속으로는 이렇게저렇게 하면되겠다 는나오는데 그누 코드를 수정하는게 문제라서 그건 나중에 의뢰로 처리할까생각중이예요.

의외로 아이디로 노출되는부분이 많다보니 만만치않더라구요.

1개월 전

훅을 사용하는 그누보드5죠?

아래 전체를 복사하셔서, 
extend 폴더에 아무파일을 하나 만드시고, 
예를들어, member_id_mask.php
복사해서 붙여넣기 하시면 거의 다 바뀌지 않을까합니다. 

간만에 코드 한번 올려보네요 ㅎㅎㅎ
 

<?php

if (!defined('_GNUBOARD_')) {

    exit; // Exit if accessed directly

}

 

// 회원 아이디를 랜덤 6자리 숫자로 마스킹하는 함수

function mask_member_id($mb_id) {

    if (empty($mb_id)) {

        return $mb_id;

    }

   

    // 같은 아이디에 대해 항상 같은 랜덤 숫자를 반환하도록 시드 고정

    $seed = crc32($mb_id);

    mt_srand($seed);

   

    // 6자리 랜덤 숫자 생성 (100000 ~ 999999)

    $masked_id = mt_rand(100000, 999999);

   

    return $masked_id;

}

 

// get_sideview 함수를 훅으로 가로채서 닉네임을 랜덤 숫자로 교체

add_replace('get_sideview', function($result, $mb_id, $name, $email, $homepage) {

    // 회원이 아닌 경우 (비회원)는 그대로 반환

    if (empty($mb_id)) {

        return $result;

    }

   

    // 마스킹된 아이디 생성

    $masked_id = mask_member_id($mb_id);

   

    // 결과에서 원본 아이디를 마스킹된 아이디로 교체

    $result = str_replace($mb_id, $masked_id, $result);

   

    // 닉네임 부분도 마스킹된 아이디로 교체 (게시판에서 보이는 이름 부분)

    if (!empty($name)) {

        $result = str_replace($name, $masked_id, $result);

    }

   

    return $result;

}, 5, 4);

 

// member_sideview_items 훅으로 더 정확한 마스킹

add_replace('member_sideview_items', function($items, $args) {

    if (isset($args['mb_id']) && !empty($args['mb_id'])) {

        $masked_id = mask_member_id($args['mb_id']);

       

        // name_tag 배열에서 아이디와 이름을 마스킹된 아이디로 교체

        if (isset($items['name_tag']) && is_array($items['name_tag'])) {

            foreach ($items['name_tag'] as $key => $tag) {

                // 아이디 교체

                if (strpos($tag, $args['mb_id']) !== false) {

                    $items['name_tag'][$key] = str_replace($args['mb_id'], $masked_id, $tag);

                }

                // 이름/닉네임 교체 (args에서 name이 전달되는 경우)

                if (isset($args['name']) && !empty($args['name']) && strpos($tag, $args['name']) !== false) {

                    $items['name_tag'][$key] = str_replace($args['name'], $masked_id, $tag);

                }

            }

        }

    }

   

    return $items;

}, 10, 2);

 

// 게시판 목록에서 직접 표시되는 이름/닉네임 마스킹

add_replace('conv_content', function($content) {

    // 정규식으로 회원 정보가 포함된 HTML 패턴을 찾아서 마스킹

    $content = preg_replace_callback(

        '/(<[^>]*class="[^"]*sv_member[^"]*"[^>]*>)([^<]+)(<\/[^>]*>)/',

        function($matches) {

            // HTML 태그는 그대로 두고 내용만 마스킹

            $masked_content = mask_member_id($matches[2]);

            return $matches[1] . $masked_content . $matches[3];

        },

        $content

    );

   

    return $content;

}, 5, 1);

 

게시글 목록

번호 제목
1717252
1717247
1717243
1717237
1717225
1717214
1717208
1717203
1717189
1717183
1717177
1717172
1717163
1717162
1717156
1717154
1717153
1717141
1717140
1717138
1717113
1717111
1717105
1717099
1717085
1717076
1717072
1717065
1717062
1717050