웹마스터 팁
회원에게 만기일 주기(1원짜리 팁)
2007.11.12 18:44
회원에게 만기일을주어서 만기일이 지나면 권한을 회수(그룹에서 제외)하는 소스입니다.
워낙 허접한 실력으로 만든거기 때문에 오류가 발생할 수 있습니다.
꼭 필요하신분만 해주시기 바랍니다.
수정된 파일명
1.modules/member/tpl/filter/insert.xml
2.modules/member/tpl/member_info.html
3.modules/member/tpl/member_list.html
4.modules/member/tpl/insert_member.html
5.modules/member/skins/default/member_info.html
6.modules/member/queries/insertMember.xml
7.modules/member/member.admin.controller.php
8.modules/member/member.controller.php
9.common/lang/ko.lang.php
10.modules/member/lang/ko.lang.php
이상 10개의 파일입니다.
우선 제로보드XE의 member 테이블에 expiredate 필드를 추가 합니다.
ALTER TABLE `xe_member` ADD `expiredate` VARCHAR( 8 ) NULL ;
1.modules/member/tpl/filter/insert.xml 수정하기
26 <param name="limit_date" target="limit_date" /> 다음 라인에
27 <param name="expiredate" target="expiredate" /> 추가
2.modules/member/tpl/member_info.html
124 <tr>
125 <th scope="row">{$lang->limit_date}</th>
126 <td>
127 <!--@if($member_info->limit_date)-->
128 {zdate($member_info->limit_date,"Y-m-d H:i")}
129 <!--@end-->
130 </td>
131 </tr> 다음 라인에
132 <tr>
133 <th scope="row">{$lang->expiredate}</th>
134 <td>
135 <!--@if($member_info->expiredate)-->
136 {zdate($member_info->expiredate,"Y-m-d")}
137 <!--@end-->
138 </td>
139 </tr> 132~139라인 추가
3.modules/member/tpl/member_list.html
22 <th scope="col">{$lang->signup_date}</th> 다음 라인에
23 <th scope="col">{$lang->expiredate}</th> 추가
36 <td class="tahoma">{zdate($val->regdate,"Y-m-d")}</td> 다음 라인에
37 <td class="tahoma">{zdate($val->expiredate,"Y-m-d")}</td> 추가
4.modules/member/tpl/insert_member.html
109 <th scope="row">{$lang->limit_date}</th>
110 <td>
111 <input type="hidden" name="limit_date" id="date_limit_date" value="{$member_info->limit_date}" />
112 <div id="str_limit_date" class="inputTypeDate fl" >{zdate($member_info->limit_date,"Y-m-d")}</div>
113 <a href="#" onclick="open_calendar('+ '+ 'limit_date','{$member_info->limit_date}');return false;" class="button"><span>{
$lang->cmd_open_calendar}<img src="../../admin/tpl/images/blank.gif" alt="" class="rightCap" /></span></a>
114 <p class="clear">{$lang->about_limit_date}</p>
115 </td>
116 </tr> 다음 라인에
117 <tr>
118 <th scope="row">{$lang->expiredate}</th>
119 <td>
120 <input type="hidden" name="expiredate" id="date_expiredate" value="{$member_info->expiredate}" />
121 <div id="str_expiredate" class="inputTypeDate fl" >{zdate($member_info->expiredate,"Y-m-d")}</div>
122 <a href="#" onclick="open_calendar('expiredate','{$member_info->expiredate}');return false;" class="button"><span>{
$lang->cmd_open_calendar}<img src="../../admin/tpl/images/blank.gif" alt="" class="rightCap" /></span></a>
123 <p class="clear">{$lang->about_expiredate}</p>
124 </td>
125 </tr> 추가
5.modules/member/skins/default/member_info.html
65 <tr>
66 <th scope="row">{$lang->last_login}</th>
67 <td>{zdate($member_info->last_login,"Y-m-d H:i")}</td>
68 </tr> 다음 라인에
69 <tr>
70 <th scope="row">{$lang->expiredate}</th>
71 <td>{zdate($member_info->expiredate,"Y-m-d")}</td>
72 </tr> 추가
6.modules/member/queries/insertMember.xml
25 <column name="extra_vars" var="extra_vars" /> 다음라인에
26 <column name="expiredate" var="expiredate" /> 추가
7.modules/member/member.admin.controller.php
21 $args = Context::gets('member_srl','user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','allow_message'+ ','denied','is_admin','description','group_srl_list','limit_date' ,'expiredate'); 변경
8.modules/member/member.controller.php
683 $args = Context::gets('user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','allow_message','expiredate')변경
1245 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"))); 다음 라인에
1246
1247 // expiredate 가 현 시간보다 적으면 정회원 그룹 삭제 By RoK.KIM
1248 if($member_info->expiredate && $member_info->expiredate < date("Ymd")) {
1249 $rok_args->member_srl = $member_info->member_srl;
1250 $rok_args->group_srl = 3; // 1.관리회원,2.준회원,3.정회원
1251 $output = executeQuery('member.deleteMemberGroupMember',$rok_args);
1252 if(!$output->toBool()) return $output;
1253 } 추가
9.common/lang/ko.lang.php
134 $lang->last_login = '최근로그인'; 다음 라인에
135 $lang->expiredate = '만기일'; 추가
10.modules/member/lang/ko.lang.php
182 $lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다'; 다음 라인에
183 $lang->about_expiredate = '+ '지정된 일자가 지나면 사용자는 정회원 그룹에서 삭제됩니다'; 추가
다 하시고 관리자 페이지에서 캐쉬 재생성해주셔야 정상적으로 작동됩니다. ^^
제가 2틀동안 고민해서 만들었습니다. 제로보드에 관한 이해가 없어서 많이 수정하기는 힘드네요.
혹시 안되는 부분이 있으시면 리플달아주세요..제가 아는범위에서 답변해 드리겠습니다.
제가 운영하는 사이트는 회원들이 포인트로 정회원 신청을 하면 포인트를 차감하고 정회원 권한을 일자로 줍니다.
제가 정회원을 일일이 체크할수없기 때문에 이렇게 소스를 수정하게 되었습니다.
댓글 17
-
제게 너무 필요한 Tip입니다.
제로님이 기본 기능에 추가해 주셨으면 좋겠습니다. -
1. 내용을 그대로 복사해보았는데 회원수정에 들어가 만기일을 클릭하고 날짜를 지정후 등록하면 수정됐다고 나오는데 만기일에 날짜가 저장이 안됩니다.
2. 위소스랑 다른점은 그룹삭제하는 과정중 그룹이 많아서 for문을 써서 삭제하고 있는데 로그인이 안됩니다..주석처리하면 로그인이 되네요..
아래내용은 member.controller.php 부분에서 그룹삭제하는 부분입니다.
어느 그룹에 속해있는지 확인이 어려워 for문을 써서 그룹에서 전부삭제했습니다.
for($i=1052;$i<1063;$i++) // 제가 생성한 그룹넘버가 1052부터 1062까지네요..
{
$rok_args->group_srl = $i; // 1.관리회원,2.준회원,3.정회원
$output = executeQuery('member.deleteMemberGroupMember',$rok_args);
}
뭐가 문제일까요?? -
까오천사
2007.11.14 11:10
1
1.modules/member/tpl/filter/insert.xml 수정하기
26 <param name="limit_date" target="limit_date" /> 다음 라인에
27 <param name="expiredate" target="expiredate" /> 추가
filter에서 27번 라인 수정하셨어요? 필터에 등록이 되지 않으면 데이타 베이스에 입력이 되지 않습니다.
for {} 문전에 $rok_args->member_srl = $member_info->member_srl; 이라인 넣어주셨나요?
확인하시고 답글남겨주세요 -
1. 넵...정상적으로 추가되어 있는 상태입니다.
<parameter>
<param name="page" target="page" />
<param name="member_srl" target="member_srl" />
<param name="user_id" target="user_id" />
<param name="password" target="password" />
<param name="user_name" target="user_name" />
<param name="nick_name" target="nick_name" />
<param name="homepage" target="homepage" />
<param name="blog" target="blog" />
<param name="birthday" target="birthday" />
<param name="email_address" target="email_address" />
<param name="allow_mailing" target="allow_mailing" />
<param name="allow_message" target="allow_message" />
<param name="denied" target="denied" />
<param name="is_admin" target="is_admin" />
<param name="description" target="description" />
<param name="group_srl_list" target="group_srl_list" />
<param name="signature" target="signature" />
<param name="limit_date" target="limit_date" />
<param name="expiredate" target="expiredate" />
</parameter>
2. 이것도 정상적이네요..현재 로그인이 되지 않아 주석처리한 상태입니다.
// expiredate 가 현 시간보다 적으면 정회원 그룹 삭제 By RoK.KIM
// if($member_info->expiredate && $member_info->expiredate < date("Ymd")) {
// $rok_args->member_srl = $member_info->member_srl;//
// for($i=1052;$i<1063;$i++)
// {
// $rok_args->group_srl = $i; // 1.관리회원,2.준회원,3.정회원
// $output = executeQuery('member.deleteMemberGroupMember',$rok_args);
// }
// if(!$output->toBool()) return $output;
// } -
까오천사
2007.11.14 17:41
7번하구 8번 라인이 잘안보이는데요..7번,8번의 젤 뒤에 'expiredate' 있어요.. 라인잘보시고 젤 뒤에 추가해주셔야 합니다.
왜 게시판에서 그부분이 잘렸는지 모르겠네요 -
감사합니다.
바쁘신데 원격제어까지 해주시고 이제 정상적으로 작동하고 있습니다.
뭐라고 감사를 드려야 될지 모르겠네요...^^
다시 한번 감사드립니다.. -
2008.02.26 02:26
모든 파일을 수정하였는데(3번 확인) 회원수정에 들어가 만기일을 클릭하고 날짜를 지정후 등록하면 수정됐다고 나오는데 만기일에 날짜가 저장이 안됩니다.
오늘 아무래도 밤새워야 할 것 같습니다. -
윗 댓글은 일정시간 지난 후 로그아웃된 상태에서 댓글을 작성하니 닉네임이 안나오네요.
----
어찌되었던 만기일 주기는 성공하였습니다.
감사합니다. ^^ -
RainSky
2008.03.30 17:06
저도 위와 마찬가지 증상이네요.
몇 번을 확인하고 다시 해봐도 날짜 지정 후 등록해도 날짜 저장이 안 됩니다.
파일 내용 수정은 위에 적힌대로 똑같이 했습니다. 물론 지연아빠님 댓글들도 확인해서 보이지 않는 부분도 다 넣었습니다.
혹시 DB member 테이블에 expiredate 필드를 추가할 때 뭔가 주의해야할 사항이 따로 있나요?
必得力 님께서는 어떻게 이 문제를 해결하셨는지 알려주실 수는 없는지 부탁드려봅니다. 정말 머리 아프네요. ^^; -
위 내용에 수정해야할 파일 중에 zbxe/modules/member/queries/updateMember.xml 가 빠져있습니다.
-
RainSky
2008.03.31 13:11
정말 어렵게 알아내신 정보를 이렇게 알려주셔서 정말 고맙습니다.
저처럼 고생하실뻔한 많은 분들께서 님의 도움으로 한결 수월하게 이 팁을 활용하시게 될 거라 믿습니다.
저도 앞으로 많이 배울수록 많이 공유할 수 있는 사람이 되도록 노력하겠습니다. ^^
(참고로 저같은 완전 초보님들을 위해 위 파일 수정 사항을 적어드립니다. 아래 빨간 부분을 추가하시면 됩니다. ^^)
18 <column name="limit_date" var="limit_date" />
19 <column name="expiredate" var="expiredate" /> -
이슈카ㆀ
2008.05.08 12:38
우와, 아이디어가 정말 괜찮습니다. 아직까지는 이런 팁을 사용할 일이 없지만... ^^
좋은 글 추천해 드립니다. 수고하세요. -
도파돌이
2009.04.28 14:53
1.2.1에 적용을 하고 개인 컴의 APM에서 테스트 해보니 잘 동작합니다. 굉장히 유용한 팁이 되겠네요.
감사합니다.
-
sylund
2009.05.22 14:31
1.2.2에서는 아주 약간 달라진 부분이 있지만 거의 동일하다고 봐도 되겠네요. 굉장히 유용한 팁입니다. 감사합니다.
-
도파
2009.08.26 21:45
1.2.4에서 되시는 분 계세요? 되었었는데.. 어느날부터 안되네요.... -
신기루418
2010.01.29 18:54
이거..준회원,정회원,특별회원 그룹에 모두 가입되 있을경우 그룹별 만기일 지정이 가능한가요?
제목 | 글쓴이 | 날짜 |
---|---|---|
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [4] | 대암지기 | 2008.02.24 |
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(안내)
[2]
![]() | 대암지기 | 2008.02.24 |
[전면수정]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [5] | 대암지기 | 2008.02.20 |
[전면수정]회원가입시 기본 정보공개 여부 체크하기(2) 스킨부분 | 대암지기 | 2008.02.17 |
회원가입 생일 필수로 입력받고, 관리자페이지 회원목록에 회원생일 출력하기 [10] | 대암지기 | 2008.02.11 |
본인외 회원정보 제어 [1] | edgarkim | 2008.02.03 |
좌측 로그인 회원 리스트가 많아지면 스크롤 처리
[6]
![]() | 똑디 | 2008.01.29 |
회원그룹별 제한된 서비스 구현을 위한 조건문 [5] | 똑디 | 2008.01.25 |
회원가입시 추가 정보 입력한것이 안 보일때 [1] | 수지보더 | 2008.01.08 |
여러 서버에서 하나의 회원목록 관리&사용 [24] | 화니군 | 2008.01.04 |
회원 아이디만 가지고 쪽지 보내는방법 [1] | sleep2 | 2008.01.01 |
회원가입시 추가한 추가정보를 관리자와 회원자신만 보기... [5] | 지연아빠 | 2007.12.22 |
회원이 이름, 닉네임등 정보 변경 못하도록 하기 [8] | 지연아빠 | 2007.12.22 |
(회원정보) 보기 페이지에서 포인트 변경하기
[4]
![]() | Simulz | 2007.11.28 |
회원에게 만기일 주기(1원짜리 팁) [17] | 까오천사 | 2007.11.12 |
외부 문서에서 회원 정보 얻는 방법 [11] | 소마세월 | 2007.11.10 |
메뉴에 "회원 정보 보기" 걸기. [4] | font | 2007.11.03 |
상단에 로그인 회원가입 등 메뉴 넣기 (id/pw찾기 추가) [7] | mireu | 2007.10.16 |
"회원 추가" 를 "회원 가입" 으로 ..
[9]
![]() | 디키스 | 2007.10.12 |
(회원 정보) 작성 글 수, 댓글 수를 보여주기 (#4, 2007-10-13)
[7]
![]() | Simulz | 2007.10.06 |
저역시 회원권한부분에 대해 고민했었는데 소스를 보니 아주 쉽게 이해가 되네요.
여러모로 써먹을수 있을것 같습니다.