mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
#5 회원 가입시 아이디/닉네임/이메일주소에 대해서 중복등의 체크를 ajax로 한 후 결과 메세지를 바로 보여주도록 처리함
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2545 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
7980219f8c
commit
59df67a199
7 changed files with 120 additions and 0 deletions
|
|
@ -35,6 +35,7 @@
|
|||
<action name="procMemberOpenIDLogin" type="controller" standalone="true" />
|
||||
<action name="procMemberOpenIDValidate" type="controller" standalone="true" />
|
||||
<action name="procMemberLogout" type="controller" standalone="true" />
|
||||
<action name="procMemberCheckValue" type="controller" standalone="true" />
|
||||
<action name="procMemberInsert" type="controller" standalone="true" />
|
||||
<action name="procMemberModifyInfo" type="controller" standalone="true" />
|
||||
<action name="procMemberModifyPassword" type="controller" standalone="true" />
|
||||
|
|
|
|||
|
|
@ -543,6 +543,43 @@
|
|||
return executeQuery('member.setMessageReaded', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입시 특정 항목들에 대한 값 체크
|
||||
**/
|
||||
function procMemberCheckValue() {
|
||||
$name = Context::get('name');
|
||||
$value = Context::get('value');
|
||||
if(!$value) return;
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 여부 체크
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
|
||||
switch($name) {
|
||||
case 'user_id' :
|
||||
// 금지 아이디 검사
|
||||
if($oMemberModel->isDeniedID($value)) return new Object(0,'denied_user_id');
|
||||
|
||||
// 중복 검사
|
||||
$member_srl = $oMemberModel->getMemberSrlByUserID($value);
|
||||
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_user_id');
|
||||
break;
|
||||
case 'nick_name' :
|
||||
// 중복 검사
|
||||
$member_srl = $oMemberModel->getMemberSrlByNickName($value);
|
||||
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_nick_name');
|
||||
|
||||
break;
|
||||
case 'email_address' :
|
||||
// 중복 검사
|
||||
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($value);
|
||||
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_email_address');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{@ $member_title = $lang->msg_update_member}
|
||||
<!--#include("./common_header.html")-->
|
||||
<!--%import("../../tpl/js/signup_check.js")-->
|
||||
|
||||
<!--%import("filter/modify_info.xml")-->
|
||||
<!--@if($member_config->image_name == 'Y')-->
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("../../tpl/js/signup_check.js")-->
|
||||
<!--%import("filter/signup.xml")-->
|
||||
|
||||
<!--%import("../../tpl/js/krzip_search.js")-->
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{@ $member_title = $lang->msg_update_member}
|
||||
<!--#include("./common_header.html")-->
|
||||
<!--%import("../../tpl/js/signup_check.js")-->
|
||||
|
||||
<!--%import("filter/modify_info.xml")-->
|
||||
<!--@if($member_config->image_name == 'Y')-->
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("../../tpl/js/signup_check.js")-->
|
||||
<!--%import("filter/signup.xml")-->
|
||||
|
||||
<!--%import("../../tpl/js/krzip_search.js")-->
|
||||
|
|
|
|||
78
modules/member/tpl/js/signup_check.js
Normal file
78
modules/member/tpl/js/signup_check.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/**
|
||||
* @brief 회원 가입시나 정보 수정시 각 항목의 중복 검사등을 하는 기능을 구현
|
||||
* @author zero
|
||||
**/
|
||||
|
||||
// 입력이 시작된 것과 입력후 정해진 시간동안 내용이 변하였을 경우 서버에 ajax로 체크를 하기 위한 변수 설정
|
||||
var memberCheckObj = { target:null, value:null }
|
||||
|
||||
// onload시에 특정 필드들에 대해 이벤트를 걸어 놓음
|
||||
xAddEventListener(window, 'load', memberSetEvent);
|
||||
|
||||
function memberSetEvent() {
|
||||
var fo_obj = xGetElementById('fo_insert_member');
|
||||
for(var node_name in fo_obj) {
|
||||
var obj = fo_obj[node_name];
|
||||
if(!obj || typeof(obj.nodeName)=="undefined" || obj.nodeName != "INPUT") continue;
|
||||
if(node_name != "user_id" && node_name != "nick_name" && node_name != "email_address") continue;
|
||||
|
||||
xAddEventListener(obj, 'blur', memberCheckValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 실제 서버에 특정 필드의 value check를 요청하고 이상이 있으면 메세지를 뿌려주는 함수
|
||||
function memberCheckValue(evt) {
|
||||
var e = new xEvent(evt);
|
||||
var obj = e.target;
|
||||
|
||||
var name = obj.name;
|
||||
var value = obj.value;
|
||||
if(!name || !value) return;
|
||||
var params = new Array();
|
||||
params['name'] = name;
|
||||
params['value'] = value;
|
||||
|
||||
var response_tags = new Array('error','message');
|
||||
|
||||
exec_xml('member','procMemberCheckValue', params, completeMemberCheckValue, response_tags, e);
|
||||
|
||||
}
|
||||
|
||||
// 서버에서 응답이 올 경우 이상이 있으면 메세지를 출력
|
||||
function completeMemberCheckValue(ret_obj, response_tags, e) {
|
||||
var obj = e.target;
|
||||
var name = obj.name;
|
||||
|
||||
if(ret_obj['message']=='success') {
|
||||
var dummy_id = 'dummy_check_'+name;
|
||||
var dummy = xGetElementById(dummy_id);
|
||||
if(dummy) xInnerHtml(dummy,'');
|
||||
return;
|
||||
}
|
||||
|
||||
var dummy_id = 'dummy_check_'+name;
|
||||
var dummy = null;
|
||||
if(! (dummy = xGetElementById(dummy_id)) ) {
|
||||
dummy = xCreateElement('DIV');
|
||||
dummy.id = dummy_id;
|
||||
dummy.style.display = "none";
|
||||
dummy.style.clear = 'both';
|
||||
dummy.style.marginTop = '10px';
|
||||
obj.parentNode.insertBefore(dummy, obj.nextChild);
|
||||
}
|
||||
|
||||
xInnerHtml(dummy, ret_obj['message']);
|
||||
|
||||
dummy.style.display = "block";
|
||||
|
||||
obj.focus();
|
||||
|
||||
// 3초 정도 후에 정리
|
||||
setTimeout(function() { removeMemberCheckValueOutput(dummy, obj); }, 3000);
|
||||
}
|
||||
|
||||
// 결과 메세지를 정리하는 함수
|
||||
function removeMemberCheckValueOutput(dummy, obj) {
|
||||
dummy.style.display = "none";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue