묻고답하기
member.controller.php 에서 전역변수 사용 질문입니다.
2015.02.16 14:01
안녕하세요.
XE로 싸이트 구축 중 회원가입 폼을 조금 고쳐보고 있는데 전역변수 사용이 궁금하여 질문 드립니다.
아래는 회원가입시 아이디,닉네임 중복을 확인 해 주는 xe의 member.controller.php 의 소스 입니다.
function procMemberCheckValue()
{
$name = Context::get('name');
$value = Context::get('value');
if(!$value) return;
$oMemberModel = getModel('member');
// Check if logged-in
$logged_info = Context::get('logged_info');
switch($name)
{
case 'user_id' :
// Check denied ID
if($oMemberModel->isDeniedID($value)) return new Object(0,'denied_user_id');
// Check if duplicated
$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' :
// Check denied ID
if($oMemberModel->isDeniedNickName($value))
{
return new Object(0,'denied_nick_name');
}
// Check if duplicated
$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' :
// Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_email_address');
break;
}
}
위 소스 중 case의 'user_id' 일 경우의 사용자가 입력한 값을 가지고 와서
case의 'nick_name'에서 사용하고 싶습니다.
제가 해본 방법은아래 빨간색 부분과 같이 해보았는데 엉터리 코드라 그런지 정상 작동을 안하고 있습니다.
function procMemberCheckValue()
{
$name = Context::get('name');
$value = Context::get('value');
if(!$value) return;
$oMemberModel = getModel('member');
// Check if logged-in
$logged_info = Context::get('logged_info');
switch($name)
{
case 'user_id' :
// Check denied ID
if($oMemberModel->isDeniedID($value)) return new Object(0,'denied_user_id');
// Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByUserID($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_user_id');
Context::set('cname',$member_srl);
//사용자가 입력한 user_id 값을 가져오고자 $member_srl을 set 했습니다.
// 사실 사용자가 입력한 user_id 값을 가져오는 변수가 $member_srl 이 맞는지도 모르겠습니다..
break;
case 'nick_name' :
// Check denied ID
if($oMemberModel->isDeniedNickName($value))
{
return new Object(0,'denied_nick_name');
}
// Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByNickName($value);
$cname = Context::get('cname');
// 위에서 가져온 user_id를 가져오고자 $cname에 변수 지정을 하였습니다.
// 이것도 사실 맞는지 모르겠습니다.
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_nick_name');
break;
case 'email_address' :
// Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_email_address');
break;
}
}
저런 엉터리 코드를 작성하는 이유는
사용자가 입력한 ID의 값과 사용자가 입력한 닉네임의 값을 비교해 보려고 하는 것입니다.
예를 들어 사용자가 아래와 같이 입력했을때
- ID 입력 : test
- 닉네임 입력 : 테스트
if 문을 사용하여 ID입력이 'test'일 경우 닉네임이 '테스트' 가 맞는지와 같은 조건문을 사용하고자 함입니다.
초보가 해결하려하니 문제해결이 너무 어려워 질문 드립니다.
선배님들의 도움 부탁 드립니다.
새해 복 많이 받으세요. 감사합니다.