웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
회원 가입 임시 제한 일자 버그 수정 방법
2008.04.13 13:02
제로보드 XE에는 회원 가입을 할때 임시로 제한 일자를 두는 옵션이 있습니다.
![사용자 지정 1.png](https://xe1.xpressengine.com/files/attach/images/121/091/717/016/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A7%80%EC%A0%95%201.png)
바로 요거지요.
현재 제로보드 4를 사용중인데, 회원 가입을 하면 이것과 비슷하게 6시간동안 제한을 걸어두도록 하였습니다. 이렇게 하니까 지금 제로보드 닷컴에서 보이는 수많은 광고 스팸글들을 막는 효과가 있더군요. 뭐 그래도 광고글 올릴 놈들은 근성으로 기다려서 올리지만.
그런데 문제는 제로보드 XE에서 이 옵션이 제대로 작동하지 않는다는 것이었습니다. 저렇게 임시 제한 일자를 설정한 다음, 그 시간이 지난 다음에 로그인을 하려고 해도 여전히 제한 일자가 안됐다면서 로그인이 안 되더군요.
버그 신고도 몇번 하고 했는데 제로님이 다른 작업 하시느라 바쁘신지 반응도 없고, 이 기능을 쓰시는 분도 안계셔서 그런가 다른 회원분들의 반응도 없던 차에, '숙지황'님이 저와 똑같은 버그를 발견하셔서, 이 현상이 저 뿐만이 아니라 제로보드 XE의 버그라는걸 확신하게 됐습니다. (관련 링크: http://www.zeroboard.com/16714033)
서론이 길었는데, 이것을 수정하여 이 기능을 제대로 써보자는게 목적입니다. 수정해야 할 파일은 zbxe\modules\member 디렉토리에 저장되어 있는 member.controller.php 입니다.
1.0.2 버전 기준으로 1279번째 줄을 보면 'denied_date가 현 시간보다 적으면 알림'이라는 주석이 있습니다. 그 바로 아래줄을 수정해야 합니다. denied_date라던가 그 아래줄의 limit_date 같은 이름을 보면 대충 감이 오시겠지요.
원래는 이렇게 되어 있습니다.
if($member_info->limit_date && $member_info->limit_date >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d")));
저는 이렇게 고쳤습니다.
if($member_info->limit_date && $member_info->limit_date >= date("YmdHis")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y년 m월 d일 H시 i분 s초")));
2군데를 고쳤는데, data("Ymd")를 data("YmdHis")로 고친 것과, limit_date,"Y-m-d"를 imit_date,"Y년 m월 d일 H시 i분 s초"로 고친 것입니다.
제가 추측한 이 버그의 원인은 이렇습니다. 위에서 수정한 것은 doLogin 함수입니다. 말 그대로 로그인을 하는 함수일 것으로 보여지는데, 여기서는 제한 일자(Limit_date)의 값을 Ymd 형식(20080413 같은)으로 검사합니다.
문제는 insertMember 함수, 즉 회원 가입을 하는 함수에서는 제한 일자를 YmdHis 형식(20080413130001 같은)으로 저장한다는 것이지요. 1375번째 줄을 보면 '임시 제한 일자가 있을 경우 제한 일자에 내용 추가'라는 주석 밑에 해당 코드가 있습니다.
그래서 둘 다 똑같이 YmdHis로 바꾼 것입니다. 물론 insertMember쪽을 Ymd로 바꿔도잘 작동할 것이라고 생각하지만,시-분-초까지 따지는게더 정확할것 같아서 이렇게 했습니다.
그리고 기존에 제한 일자를 그냥'2008-04-13'이런 식으로 표시하길래, Y년 m월 d일 H시 i분 s초를 넣어서 '2008년 4월 13일 1시 00분 00초'라는 식으로 나오도록 바꿨습니다. 기능과 관련은 없겠지만 이게더 보기 좋을것 같아서 말입니다.
테스트를 해보고 잘 작동하는것 같아서 올립니다. 다만 테스트를 하는데 걸리는 시간이 무조건 최소 하루이다 보니 보다 안정적인 테스트는해볼 여유가 없군요.
![사용자 지정 1.png](https://xe1.xpressengine.com/files/attach/images/121/091/717/016/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A7%80%EC%A0%95%201.png)
바로 요거지요.
현재 제로보드 4를 사용중인데, 회원 가입을 하면 이것과 비슷하게 6시간동안 제한을 걸어두도록 하였습니다. 이렇게 하니까 지금 제로보드 닷컴에서 보이는 수많은 광고 스팸글들을 막는 효과가 있더군요. 뭐 그래도 광고글 올릴 놈들은 근성으로 기다려서 올리지만.
그런데 문제는 제로보드 XE에서 이 옵션이 제대로 작동하지 않는다는 것이었습니다. 저렇게 임시 제한 일자를 설정한 다음, 그 시간이 지난 다음에 로그인을 하려고 해도 여전히 제한 일자가 안됐다면서 로그인이 안 되더군요.
버그 신고도 몇번 하고 했는데 제로님이 다른 작업 하시느라 바쁘신지 반응도 없고, 이 기능을 쓰시는 분도 안계셔서 그런가 다른 회원분들의 반응도 없던 차에, '숙지황'님이 저와 똑같은 버그를 발견하셔서, 이 현상이 저 뿐만이 아니라 제로보드 XE의 버그라는걸 확신하게 됐습니다. (관련 링크: http://www.zeroboard.com/16714033)
서론이 길었는데, 이것을 수정하여 이 기능을 제대로 써보자는게 목적입니다. 수정해야 할 파일은 zbxe\modules\member 디렉토리에 저장되어 있는 member.controller.php 입니다.
1.0.2 버전 기준으로 1279번째 줄을 보면 'denied_date가 현 시간보다 적으면 알림'이라는 주석이 있습니다. 그 바로 아래줄을 수정해야 합니다. denied_date라던가 그 아래줄의 limit_date 같은 이름을 보면 대충 감이 오시겠지요.
원래는 이렇게 되어 있습니다.
if($member_info->limit_date && $member_info->limit_date >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d")));
저는 이렇게 고쳤습니다.
if($member_info->limit_date && $member_info->limit_date >= date("YmdHis")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y년 m월 d일 H시 i분 s초")));
2군데를 고쳤는데, data("Ymd")를 data("YmdHis")로 고친 것과, limit_date,"Y-m-d"를 imit_date,"Y년 m월 d일 H시 i분 s초"로 고친 것입니다.
제가 추측한 이 버그의 원인은 이렇습니다. 위에서 수정한 것은 doLogin 함수입니다. 말 그대로 로그인을 하는 함수일 것으로 보여지는데, 여기서는 제한 일자(Limit_date)의 값을 Ymd 형식(20080413 같은)으로 검사합니다.
문제는 insertMember 함수, 즉 회원 가입을 하는 함수에서는 제한 일자를 YmdHis 형식(20080413130001 같은)으로 저장한다는 것이지요. 1375번째 줄을 보면 '임시 제한 일자가 있을 경우 제한 일자에 내용 추가'라는 주석 밑에 해당 코드가 있습니다.
그래서 둘 다 똑같이 YmdHis로 바꾼 것입니다. 물론 insertMember쪽을 Ymd로 바꿔도잘 작동할 것이라고 생각하지만,시-분-초까지 따지는게더 정확할것 같아서 이렇게 했습니다.
그리고 기존에 제한 일자를 그냥'2008-04-13'이런 식으로 표시하길래, Y년 m월 d일 H시 i분 s초를 넣어서 '2008년 4월 13일 1시 00분 00초'라는 식으로 나오도록 바꿨습니다. 기능과 관련은 없겠지만 이게더 보기 좋을것 같아서 말입니다.
테스트를 해보고 잘 작동하는것 같아서 올립니다. 다만 테스트를 하는데 걸리는 시간이 무조건 최소 하루이다 보니 보다 안정적인 테스트는해볼 여유가 없군요.
댓글 2
제목 | 글쓴이 | 날짜 |
---|---|---|
제로보드 2.3 에서 2.5 변경사항 데이터 테이블 구조 변경사항 체크를 정리해봅니다. [4] | 도토리나무 | 2007.11.09 |
첨부파일 기능에 대한 짧은 정보 [3] | 고라리 | 2007.11.09 |
회원에게 만기일 주기(1원짜리 팁) [17] | 까오천사 | 2007.11.12 |
외부페이지에서 위젯사용하지 않고 로그인 정보 다루기. [5] [1] | 길치객 | 2007.12.12 |
외부프로그램(페이지)에서 zbxe 로그인 정보 연동하기
[33]
![]() | 도데군 | 2007.12.23 |
제로보드에서 로그인후 테크노트에서 로그인정보 사용하기 [4] | JinHoHan | 2007.12.26 |
[전면수정]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [5] | 대암지기 | 2008.02.20 |
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [4] | 대암지기 | 2008.02.24 |
[정식 버전 1.0.0] 회원 정보에서 ID 변경하기(1) 모듈부분 [1] | 대암지기 | 2008.02.27 |
큰 파일의 썸네일이 안생기는 경우 해결방법(수정)
[12]
![]() | 얼터 | 2008.03.15 |
큰 파일의 썸네일이 안생길때 해결방법-추가 [7] | HIKARU | 2008.03.18 |
회원 가입 임시 제한 일자 버그 수정 방법
[2]
![]() | 껄껄껄 | 2008.04.13 |
제한된 시간 안에 글을 또 등록할 때 IP 금지 기능(스팸필터) 해제하기 [3] | 비나무 | 2008.05.03 |
확장변수 다중선택에서 체크박스의 선택개수를 제한하기
[5]
![]() | 우야꼬 | 2008.05.30 |
[1원짜리팁] 큰 이미지 썸네일 못생성& 확장변수 원하는 곳에 배치하기 ^^ [2] | 파파민 | 2008.06.23 |
각 리스트형 위젯에 페이지 기능을 달자. [10] | 라르게덴 | 2008.09.02 |
제로보드XE가입 -> 트랙자동가입 기능 | 개돌 | 2008.10.14 |
회원약관 추가
[7]
![]() | 애치티 | 2009.01.15 |
제로보드XE 외부출석부
[1]
![]() | noirzo | 2009.01.18 |
첨부 파일 용량 문제 - 이것도 저것도 않될때
[4]
![]() | DeJavu346 | 2009.01.22 |