웹마스터 팁
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
제목 | 글쓴이 | 날짜 |
---|---|---|
웹호스팅 세팅기 1편 - 설치하기(2부) [3] | 임현 | 2002.08.22 |
FTP 에 사용자추가후 로그인부분 추가하기 - 로그인 부분
[2]
![]() | DearMai | 2002.08.12 |
FTP 에 사용자추가후 로그인부분 추가하기 - 사용자추가부분
[5]
![]() | DearMai | 2002.08.12 |
ASP + MS SQL 기반 게시판 설치하기 - 두번째
![]() | 오픈소스 | 2002.07.12 |
ASP + MS SQL 기반 게시판 설치하기 - 첫번째
![]() | 오픈소스 | 2002.07.12 |
[알아서 나쁠것없는 10원짜리 팁!] 수십 수백명사용자의 일괄생성 방법! [6] | 임현 | 2002.05.09 |
리눅스 아주 간단한 사용자 계정 주기-_- [7] | i- | 2002.03.12 |
간단한 ajax 채팅소스입니다. [12] | 제로저아 | 2008.10.23 |
관리자모드 - 관리자그룹만 모든 회원리스트보기 [2] | 이지혜609 | 2007.10.23 |
포인트부여시 ...회원로그인 [2] | 구본순 | 2007.08.28 |
mysql 관리하는 프로그램입니다. (7/26 13:03) 수정
[4]
![]() | 제로저아 | 2007.07.18 |
mysql 안쓰는 간단한 게시판. [20] | 제로저아 | 2007.07.15 |
[PHP 동영상강의] 43. 공용함수의 제작/쿠키로그인(보안) [4] | 서기 | 2006.03.16 |
[PHP 동영상강의] 39. 회원가입/로그인 처리 [8] | 서기 | 2006.02.06 |
[PHP 동영상강의] 25. 회원가입처리 / 로그인 구현 [6] | 서기 | 2005.12.16 |
효율적인 경로 지정하기 [9] | 대류 | 2005.07.27 |
나만의 미니홈 만들기 ㅡ password.php
[8]
![]() | 예뜨락 | 2005.05.07 |
나만의 미니홈 만들기 ㅡ delete.php 파일 [2] | 예뜨락 | 2005.01.03 |
IE 에서도 투명 알파값이 적용된 PNG 이미지를 맘껏 활용하자!
[8]
![]() | THE PAPER™ | 2004.12.27 |
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크
[9]
![]() | 예뜨락 | 2004.11.27 |