[XE] 로그인 시 ID와 닉네임을 쿠키로 생성하려면

돌아다니면서 구한 자료로 공부하는 공간입니다..

틀린부분이 있다면 말씀해주시면 수정하도록 하겠습니다.

※ 남을 비방하거나 욕 / 정치적인 글은 삭제 대상이 됩니다. ※

[XE] 로그인 시 ID와 닉네임을 쿠키로 생성하려면

만키로군 0 1774 0
제목 그대로 로그인 시 ID와 닉네임을 쿠키로 생성하려면 어떻게 해야 하나요?

어떤 파일에 소스를 추가해야 하는지요?

쿠키로 생성된 쿠키는 어떻게 출력해야 하나요?

너무 기초적인 질문을 드려서 죄송합니다.

 







 

방법은 몇가지 있습니다...

1. 로그인 위젯에서 쿠키생성.
2. 인증관련 데이터를 Context에 설정하는 부분에서 쿠키생성.
3. 로그인, 로그아웃 컨트롤 부분에서 쿠키생성.

1, 2번은 로그인 또는 로그아웃 후에 refresh를 해줘야 쿠키가 뜨거나 삭제되는 문제가 있습니다...

결국 3번에서 처리해서 페이지를 redirection 해줘야 뭔가 그럴듯하게 보이겠죠...

그럼 ZBXE에서 로그인/로그아웃을 실제로 처리하는 부분은 어디냐...하면요...

/zbxe/modules/member/member.controller.php
입니다...

이 파일의 126번째 라인 function procMemberLogout() 하고...
1097번째 라인의 function setSessionInfo($member_info) 에서 쿠키를 구워주면 되는거죠...

예제입니다.

쿠키 생성

function setSessionInfo($member_info) {
if(!$member_info->member_srl) return;
// 오픈아이디인지 체크
if(eregi("^([0-9a-z]+)$", $member_info->user_id)) $member_info->is_openid = false;
else $member_info->is_openid = true;
// 로그인 처리
$_SESSION['is_logged'] = true;
$_SESSION['ipaddress'] = $_SERVER['+ 'REMOTE_ADDR'];
$_SESSION['member_srl'] = $member_info->member_srl;
$_SESSION['is_admin'] = false;
unset($member_info->password);
// 사용자 그룹 설정
if($member_info->group_list) {
$group_srl_list = array_keys($member_info->group_list);
$_SESSION['group_srls'] = $group_srl_list;
// 관리자 그룹일 경우 관리자로 지정
$oMemberModel = &getModel('+ 'member');
$admin_group = $oMemberModel->getAdminGroup();
if($admin_group->group_srl && in_array($admin_group->group_srl, $group_srl_list)) $_SESSION['is_admin'] = true;
}

// 세션에 로그인 사용자 정보 저장
foreach($member_info as $key => $val) {
$_SESSION['logged_info']->{$key} = $val;
}

@setcookie('nick_name', $_SESSION['logged_info'+ ']->nick_name, time()+60*60*24, '/');
@setcookie('user_id', $_SESSION['logged_info']->user_id, time()+60*60*24, '/');

Context::set('is_logged', true);
Context::set('logged_info', $member_info);
}




쿠키 삭제

function procMemberLogout() {
$this->destroySessionInfo();
@setcookie('nick_name', '', time()-60*60*24, '/');
@setcookie('user_id', '', time()-60*60*24, '/');
return new Object();
}


빨간색만 넣어주세요.

로그인은 원래 doLogin 부분에서 처리해야하는데...
저기서만 처리하면 로그인 했을때 쿠키가 구워지긴 하는데...
회원정보 수정시에 쿠키가 갱신이 안되는 문제가 생기죠...
그래서 그냥 아예 세션처리하는 부분에서 해준겁니다...
로그인/수정...등등...
모두 여기를 공통으로 거치거든요...

, ,

0 Comments
제목