그누보드 회원 아이디 체계를 이메일 주소로 변경하는 방법
페이지 정보

본문
그누보드 회원 아이디를 이메일 주소 형식으로 변경하고 로그인까지 연동하는 방법과 연관 테이블 수정 시 주의사항을 알아봅니다.
그누보드 회원 아이디 체계를 이메일 주소로 변경하는 방법
그누보드에서 회원가입 및 로그인 시 아이디 대신 이메일 주소를 사용하도록 설정하려면 스킨 파일, 데이터 처리 파일, 유효성 검사 함수, 자바스크립트 및 데이터베이스 테이블을 수정해야 합니다.
1. 스킨 파일 수정
skin/member/basic/register_form.skin.php 파일을 수정합니다. (모바일 스킨도 사용하는 경우 해당 파일도 별도로 수정합니다.)
- 아이디 입력 영역 수정: 안내 문구와 최대 글자수 제한을 이메일 길이에 맞게 변경합니다. 예시로
maxlength="100"등으로 설정합니다.
<span class="frm_info">이메일 주소를 입력하세요. 아이디는 이메일 주소로 사용됩니다.</span>
<input type="text" name="mb_id" value="<?php echo $member['mb_id']?>" id="reg_mb_id" <?php echo $required?> <?php echo $readonly?> class="frm_input <?php echo $required?> <?php echo $readonly?>" minlength="3" maxlength="100">
- 기존 이메일 입력 부분 전체 삭제: 중복 수집을 방지하기 위해 기존 E-mail 입력 항목 테이블 행(
<tr>... </tr>) 전체를 삭제합니다. - 하단 스크립트의 이메일 검사 부분 삭제: 파일 하단의 스크립트 중 E-mail 검사 구문을 삭제합니다.
// E-mail 검사 관련 코드 삭제
if ((f.w.value == "") || (f.w.value == "u" && f.mb_email.defaultValue!= f.mb_email.value)) {
var msg = reg_mb_email_check();
if (msg) {
alert(msg);
f.reg_mb_email.select();
return false;
}
}
2. 회원가입 처리 파일 수정
bbs/register_form_update.php 파일을 수정합니다.
- 이메일 변수 대입 변경:
$mb_email = trim($_POST['mb_id']);
- 이메일 유효성 검사 주석 처리:
// if ($msg = empty_mb_email($mb_email)) alert($msg, "", true, true);
// if ($msg = valid_mb_email($mb_email)) alert($msg, "", true, true);
// if ($msg = prohibit_mb_email($mb_email)) alert($msg, "", true, true);
- 세션 검증 코드 수정: 세션 비교 조건에서
get_session('ss_check_mb_email')!= $mb_email부분을 삭제합니다.
if (get_session('ss_check_mb_id')!= $mb_id || get_session('ss_check_mb_nick')!= $mb_nick) {
set_session('ss_check_mb_id', '');
set_session('ss_check_mb_nick', '');
alert('올바른 방법으로 이용해 주십시오.');
}
3. 유효성 검사 함수 수정
lib/register.lib.php 파일의 valid_mb_id 함수를 이메일 정규식 검사로 변경합니다.
function valid_mb_id($reg_mb_id) {
if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $reg_mb_id))
return "아이디는 이메일 주소로 사용합니다.\n이메일 주소를 올바르게 입력해 주십시오.";
else
return "";
}
4. 자바스크립트 수정
js/jquery.register_form.js 파일에서 아이디 체크 항목의 인코딩 처리를 수정합니다.
"reg_mb_id": $("#reg_mb_id").val() // 추가됨
// "reg_mb_id": encodeURIComponent($("#reg_mb_id").val())
(참고: JS 수정 후 반영이 안 될 경우 웹브라우저 캐시를 삭제하고 확인합니다.)
5. 데이터베이스(DB) 필드 타입 변경 및 유의사항
g5_member 테이블의 mb_id 필드 기본 크기가 짧으므로 기존 이메일 필드와 동일하게 varchar(255) 등으로 변경해야 합니다.
- 연관 테이블 확인:
g5_member테이블뿐만 아니라 회원 아이디(mb_id)를 저장하는 포인트 테이블, 게시판 테이블, 쪽지 테이블, 스크랩, 1:1 문의 등 관련 테이블의 필드도 함께 수정할 필요가 있습니다. 전부 찾아서 수정하기 번거롭고 20자를 초과하는 이메일 주소 호환성 문제가 우려된다면 스킨의maxlength="20"제한을 그대로 유지할 수도 있습니다.
6. 그누보드 5.3.1.8 이후 버전 추가 조치
5.3.1.8 이후 버전을 사용 중이라면 아이디에서 특수문자를 제거하는 코드가 추가되어 있으므로 해당 부분을 주석 처리해야 합니다.
- 수정 파일:
/lib/common.lib.php의get_member함수
function get_member($mb_id, $fields='*') {
global $g5;
// $mb_id = preg_replace("/[^0-9a-z_]+/i", "", $mb_id);
return sql_fetch(" select $fields from {$g5['member_table']} where mb_id = TRIM('$mb_id') ");
}
데이터베이스 회원 아이디(mb_id) 필드 확장 안내
회원 아이디 체계를 이메일 주소로 변경할 때, 기본 설정된 g5_member 테이블의 mb_id 필드 타입인 varchar(20)은 긴 이메일 주소를 수용하기에 부족할 수 있습니다. 따라서 이메일 주소가 기본 길이 제한을 초과하여 저장될 때 발생할 수 있는 데이터 유실이나 오류를 방지하기 위해 관련 테이블과 필드를 함께 수정해야 합니다.
수정 대상 테이블 및 필드
g5_member 테이블뿐만 아니라 mb_id를 참조하는 연관 테이블들의 필드 타입도 기존 이메일 필드와 동일하게 varchar(255) 수준으로 확장해야 합니다.
- 회원 테이블:
g5_member(mb_id필드) - 포인트 테이블: 포인트 관련 데이터 저장 시
mb_id,po_rel_id필드 - 게시판 테이블: 게시글 작성자 정보 등을 저장하는
mb_id필드 - 쪽지 테이블: 쪽지 수·발신자를 관리하는
me_recv_mb_id,me_send_mb_id필드 - 기타 테이블: 스크랩, 1:1 문의 등 회원 아이디를 기록하는 연관 테이블들의
mb_id필드
주의 사항 및 대안
- 연관된 모든 테이블을 찾아 수정하기 번거롭거나 전체 수정에 자신이 없다면, 이메일 주소 길이가 20자를 초과할 때 가입을 차단하는 방식을 유지할 수 있습니다. 다만 이메일 도메인 주소 길이를 고려할 때 20자는 짧을 수 있으므로 운영 환경에 맞게 판단해야 합니다.
- 데이터베이스 구조 변경 작업을 진행하기 전에는 반드시 회원 DB 테이블인
g5_member를 포함한 관련 데이터를 백업한 뒤 진행하는 것을 권장합니다.
그누보드 5.3.1.8 이후 버전 특수문자 제거 로직 조치 방법
그누보드 5.3.1.8 이후 버전을 사용 중인 환경에서 아이디를 이메일 형식으로 변경할 때 @, . 등의 특수문자가 포함되어 가입이 차단되는 현상이 발생할 수 있습니다. 이는 최신 버전의 공통 라이브러리 파일에 아이디 값의 특수문자를 제거하는 코드가 추가되었기 때문입니다.
수정 위치 및 방법
/lib/common.lib.php파일을 엽니다.- 회원 정보를 얻는
get_member함수 안에서 특수문자를 제거하는 코드를 찾아 주석 처리합니다.
// 회원 정보를 얻는다.
function get_member($mb_id, $fields='*') {
global $g5;
// $mb_id = preg_replace("/[^0-9a-z_]+/i", "", $mb_id); // 이 부분을 주석 처리
return sql_fetch(" select $fields from {$g5['member_table']} where mb_id = TRIM('$mb_id') ");
}
다음 행동
- 위 코드를 주석 처리한 뒤 웹브라우저 캐시를 삭제하고 이메일 형식의 아이디로 회원가입 및 로그인을 다시 테스트하여 정상 작동하는지 확인합니다.
그누보드 회원 아이디 이메일 체계 변경 가이드
회원 아이디를 이메일 형식으로 변경할 때는 사이트 운영 상황에 따라 다음 기준을 선택하십시오.
- 신규 사이트 구축 시: 스킨 파일(
register_form.skin.php), 처리 파일(register_form_update.php), 유효성 검사(lib/register.lib.php)를 수정하고, 5.3.1.8 이후 버전은/lib/common.lib.php의 특수문자 제거 로직을 주석 처리하십시오. - 기존 회원 데이터가 있는 경우:
g5_member테이블뿐만 아니라 포인트, 게시판, 쪽지 등mb_id를 참조하는 모든 테이블의 필드 타입을varchar(255)로 확장해야 데이터 유실을 방지할 수 있습니다. - 수정 후 오류 발생 시:
register_form_update.php의 세션 검증 로직에서 이메일 세션 비교(ss_check_mb_email) 코드가 남아있는지 확인하고 제거하십시오.
실전 FAQ
Q. 연관 테이블의 mb_id 필드를 모두 수정해야 하나요?
- 실행 중 막히는 점:
g5_member테이블만 수정하고 포인트, 게시판, 쪽지 등 연관 테이블의mb_id필드(기본varchar(20))를 그대로 두면, 20자를 초과하는 이메일 주소 저장 시 데이터 오류가 발생합니다. - 대안: 모든 테이블 수정이 번거롭다면 스킨 파일의
maxlength를 20으로 유지하여 긴 이메일 가입을 제한할 수 있습니다.
Q. 5.3.1.8 이후 버전에서 아이디 유효성 검사 오류가 발생합니다.
- 예외: 최신 버전의
/lib/common.lib.php내get_member함수에는 아이디의 특수문자를 강제 제거하는 코드가 포함되어 있습니다.@와.이 포함된 이메일 주소가 이 로직에 의해 차단되므로 해당 라인을 주석 처리해야 합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 특정 게시판 이미지 파일만 업로드 제한 방법 26.09.29
- 다음글그누보드 인기 검색어 DB 저장 기능 비활성화 방법 26.09.29
댓글목록
등록된 댓글이 없습니다.