BOARD

팁·활용

그누보드4 게시판 목록 및 내용에서 회원 이름/별명 마스킹 처리하기

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 4회 작성일 26-10-14 16:13

본문

그누보드4 게시판 목록 및 내용에서 회원 이름/별명 마스킹 처리하기

그누보드4 게시판 목록과 내용 보기 화면에서 일반 회원의 실명이나 별명의 중간 글자를 'O' 또는 '*' 문자로 마스킹하여 개인정보를 보호하는 PHP 스킨 수정 방법을 알아봅니다.

그누보드4 게시판 목록 및 내용 회원 이름 마스킹 처리 방법

그누보드4 게시판에서 관리자 레벨에 따라 예외를 두고, 일반 회원의 이름이나 별명 중간 글자를 마스킹(O 또는 *) 처리하려면 스킨 파일(list.skin.php 및 view.skin.php)의 출력 코드를 수정합니다. PHP 4.0.6 이상 또는 PHP 5 버전 환경의 mb_substr 함수를 활용합니다.

1. 게시판 목록 (list.skin.php) 수정

목록 파일에서 기존에 이름을 출력하던 <?=$list[$i][name]?> 부분을 찾아 아래 코드로 변경합니다.

<?php if($member['mb_level'] >= 7) { // 관리자는 전체보기
 echo $list[$i]['name'];
} else {
 //mb_internal_encoding('UTF-8'); // utf-8 일때
 //mb_internal_encoding('euc-kr'); // euc-kr 일때
 $string = $list[$i]['wr_name']; // 실명을 사용할 경우
 //$string = $list[$i]['wr_nick']; // 별명을 사용할 경우
 echo mb_substr($string, 0, 1, 'utf-8'); // 첫글자
 echo "O";
 echo mb_substr($string, 2, 20, 'utf-8'); // 세번째 이후 글자
}
?>

2. 내용 보기 (view.skin.php) 수정

내용 보기 파일에서 기존에 이름을 출력하던 <?=$view[name]?> 부분을 찾아 아래 코드로 변경합니다.

<?php if($member['mb_level'] >= 7) { // 관리자는 전체보기
 echo $view['name'];
} else {
 //mb_internal_encoding('UTF-8'); // utf-8 일때
 //mb_internal_encoding('euc-kr'); // euc-kr 일때
 $string = $view['wr_name']; // 실명을 사용할 경우
 //$string = $view['wr_nick']; // 별명을 사용할 경우
 echo mb_substr($string, 0, 1, 'utf-8'); // 첫글자
 echo "*";
 echo mb_substr($string, 2, 20, 'utf-8'); // 세번째 이후 글자
}
?>

3. 확인 및 주의사항

  • 스킨 수정 전 원본 파일을 반드시 백업합니다.
  • 관리자 계정으로 로그인하여 전체 이름이 정상적으로 노출되는지 확인하고, 일반 회원 및 비회원 상태에서 중간 글자가 O 또는 *로 마스킹되어 출력되는지 점검합니다.
  • 사용 중인 서버의 인코딩 환경(UTF-8 또는 EUC-KR)에 따라 글자가 깨지는 현상이 발생할 경우 주석 처리된 mb_internal_encoding 설정을 확인하여 적용합니다.

서버 인코딩 환경에 따른 mbinternalencoding 설정 방법

서버의 인코딩 환경(UTF-8 또는 EUC-KR)에 따라 mb_substr 함수 사용 시 글자가 깨지는 현상을 방지하려면, 스킨 코드 내에서 주석 처리된 인코딩 지정 코드를 환경에 맞게 해제하여 적용할 수 있습니다.

인코딩 설정 적용 위치 및 방법

게시판 목록(list.skin.php) 또는 내용 보기(view.skin.php) 파일에서 마스킹 처리를 위해 작성한 조건문 내부의 mb_internal_encoding 함수 주석을 해제합니다.

  • UTF-8 인코딩 환경인 경우:
    mb_internal_encoding('UTF-8');
  • EUC-KR 인코딩 환경인 경우:
    mb_internal_encoding('euc-kr');

다음 행동 및 주의사항

인코딩 설정을 변경하거나 추가한 뒤에는 웹브라우저에서 게시판 목록과 내용 보기에 접속하여 한글 이름이나 별명이 깨지지 않고 마스킹이 정상적으로 노출되는지 확인합니다. 사용 중인 서버와 사이트의 문자셋에 일치하지 않는 인코딩을 지정할 경우 오히려 출력이 누락되거나 깨질 수 있으므로 운영 중인 서버 환경을 먼저 확인해야 합니다.

상황별 마스킹 처리 가이드

내 상황우선할 판단다음 행동
일반 회원과 관리자에게 서로 다른 이름 노출 형태가 필요함관리자 레벨(예: 7 이상) 체크 조건문을 스킨 상단에 배치list.skin.php와 view.skin.php에 mb_substr 함수를 포함한 조건문 코드 적용
이름 마스킹 적용 후 한글 글자가 깨지거나 누락됨서버의 문자셋 환경(UTF-8 또는 EUC-KR) 인코딩 확인주석 처리된 mb_internal_encoding 설정의 주석을 해제하여 적용

실전 FAQ

Q. substr 대신 mb_substr 함수를 반드시 사용해야 하는 이유는 무엇인가요?

  • 예외 및 대안: substr 함수는 바이트 단위로 문자열을 잘라내기 때문에 멀티바이트 문자(한글) 환경에서 글자가 깨지거나 의도치 않은 결과가 발생합니다. UTF-8 또는 EUC-KR 환경에서는 글자 단위를 정확히 인식하는 mb_substr 함수를 사용해야 안전합니다.

Q. 관리자 레벨 기준을 변경하려면 어떻게 수정해야 하나요?

  • 실행 및 예외 점검: 제공된 코드의 $member['mb_level'] >= 7 조건문 숫자 7을 운영 중인 사이트의 정책에 맞는 관리자 또는 특정 회원 레벨 숫자로 변경하여 적용합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.