XE(XpressEngine) 팁

xe 중복로그인 방지 하는 방법

xemaker 2017. 7. 13. 09:34

과외 사이트, 학습 사이트, 강좌 사이트 등은 중복로그인 방지가 필요로 한다.


왜냐하면 유료 강의 사이트에 누가 회원가입 한번 해서 친구들이나 지인에게 나누어줘서 유료 강의를 들을 수 있게 할 수 있기 때문이다.


그래서 xe로 만들어진 사이트에서 중복로그인에 대해 구글링해서 이것저것 해봤는데..


일단 과거 xe는 아이디로 로그인 되는게 디폴트라 id를 통한 중복로그인 설명들이 검색 되었다. 물론 아이디로 로그인 되게 관리자가 설정해 줄수도 있지만 어디 있는지 찾기도 어렵고 번거롭게 설정해줘야 한다.


그래서 요새 xe 디폴트인 이메일 주소로 중복 로그인 방지 하는 방법을 살펴 본다.


$arg='';

$oSessionModel = &getModel('session');

$sessOut = $oSessionModel->getLoggedMembers($arg);


$output = $this->doLogin($user_id, $password, $keep_signed=='Y'?true:false);

if (!$output->toBool()) return $output;


$outputMemberSrl=$output->data->member_srl;


foreach($sessOut->data as $key=>$val){

if( $outputMemberSrl == $val->member_srl ){

return new Object(-1, 'already_logged');

}

}


일단 NULL==NULL 일 경우를 조심해야 하고..


xe 관리자 로그인해서 인증세션DB 사용을 Y로 해야 된다.. (인증세션DB 관련은 이전 글(포스팅)에 있음..)


이렇게 하면 원리가 xe_session 테이블에 있는 값을 읽어서 현재 로그인 하려고 하는 사람의 동일한 member_srl 이 있는지 검사해서 있으면 튕기는 것이다.



저렇게 하고 테스트를 해보니 됐다 안됐다 하는거 같다. 음.. xe_session 에 관해 더 연구를 해봐야 겠다..


로그인 관련 프로그램은 테스트 하기가 힘들다.. 정확히 테스트해서 완성하신분 있고 수정할게 있으면 댓글 달아주심 감사요^^