브라우져 닫을때까지 로그인 유지하기
안녕하세요~ 아이리프 입니다~
이 팁이 중복일지 모르겠지만, 로그인 관련해서 세션이니 뭐니 지속적으로 연결하고 싶은데 잘 안되시는 분들이 많은걸로 압니다. 저 또한 그문제로 새벽까지 보고 있었는데 의외로 간단하게 해결했습니다.
저는 쿠키를 이용해서 했는데요, 자동로그인의 쿠키를 활용 했습니다.
수정해야할 파일은 bbs/login_check.php 입니다.
50번 줄 쯤에
를 찾으시고 아래 처럼 바꿔주세요.
동작원리는 보시는데로, 로그인 할시에 자동로그인 쿠키에 만기시간을 0 을 주어서 브라우져가 꺼지면 쿠키가 삭제되게 되있습니다. 즉 브라우져를 계속 몇시간동안 켜놔도 자동 로그인을 한것처럼 로그인이 풀리지 않지만, 브라우져를 끄면 쿠키가 삭제 됨으로 로그아웃 되는 방식 입니다.
여기서 만약에, 로그인 유지시간을 설정 하고 싶으시면 아래처럼 하시면 됩니다.
위 예제는 만기 시간을 0 에서 $g4[server_time] + ( 3600 * 3 ) 로 바꾸어 3시간 이후에 로그아웃 되게 만들었습니다. 물론 세션 만기 시간보다 적게 설정하면 정상적으로 동작하지 않을것 같습니다.
완벽하게 테스트는 못해봤구요. 팁에 문제가 있으면 알려주세요 ^^
감사합니다.
이 팁이 중복일지 모르겠지만, 로그인 관련해서 세션이니 뭐니 지속적으로 연결하고 싶은데 잘 안되시는 분들이 많은걸로 압니다. 저 또한 그문제로 새벽까지 보고 있었는데 의외로 간단하게 해결했습니다.
저는 쿠키를 이용해서 했는데요, 자동로그인의 쿠키를 활용 했습니다.
수정해야할 파일은 bbs/login_check.php 입니다.
50번 줄 쯤에
set_cookie('ck_mb_id', '',0);
set_cookie('ck_auto', '',0);
set_cookie('ck_auto', '',0);
를 찾으시고 아래 처럼 바꿔주세요.
$key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $mb[mb_password]);
setcookie(md5('ck_mb_id'), base64_encode($mb[mb_id]), 0, '/', $g4[cookie_domain]);
setcookie(md5('ck_auto'), base64_encode($key), 0, '/', $g4[cookie_domain]);
setcookie(md5('ck_mb_id'), base64_encode($mb[mb_id]), 0, '/', $g4[cookie_domain]);
setcookie(md5('ck_auto'), base64_encode($key), 0, '/', $g4[cookie_domain]);
동작원리는 보시는데로, 로그인 할시에 자동로그인 쿠키에 만기시간을 0 을 주어서 브라우져가 꺼지면 쿠키가 삭제되게 되있습니다. 즉 브라우져를 계속 몇시간동안 켜놔도 자동 로그인을 한것처럼 로그인이 풀리지 않지만, 브라우져를 끄면 쿠키가 삭제 됨으로 로그아웃 되는 방식 입니다.
여기서 만약에, 로그인 유지시간을 설정 하고 싶으시면 아래처럼 하시면 됩니다.
setcookie(md5('ck_mb_id'), base64_encode($mb[mb_id]), $g4[server_time] + ( 3600 * 3 ) , '/', $g4[cookie_domain]);
setcookie(md5('ck_auto'), base64_encode($key), $g4[server_time] + ( 3600 * 3 ) , '/', $g4[cookie_domain]);
setcookie(md5('ck_auto'), base64_encode($key), $g4[server_time] + ( 3600 * 3 ) , '/', $g4[cookie_domain]);
위 예제는 만기 시간을 0 에서 $g4[server_time] + ( 3600 * 3 ) 로 바꾸어 3시간 이후에 로그아웃 되게 만들었습니다. 물론 세션 만기 시간보다 적게 설정하면 정상적으로 동작하지 않을것 같습니다.
완벽하게 테스트는 못해봤구요. 팁에 문제가 있으면 알려주세요 ^^
감사합니다.
추가 - 최고관리자도 이 팁이 적용될려면 common.php 를 아래 처럼 고쳐줘야 합니다.
// 최고관리자는 자동로그인 금지
if ($tmp_mb_id != $config['cf_admin'])
{
부분을 찾아서 위 두줄만 주석을 치시고 끝나는 } 도 주석을 쳐주시면 됩니다~
// 최고관리자는 자동로그인 금지
if ($tmp_mb_id != $config['cf_admin'])
{
부분을 찾아서 위 두줄만 주석을 치시고 끝나는 } 도 주석을 쳐주시면 됩니다~
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 18개
잘 되었으면 좋겠네요.. ^^
30분 이라면 30*60 이니까 1800 이라고 쓰면 되겠네요 ^^
setcookie(md5('ck_mb_id'), base64_encode($mb[mb_id]), $g4[server_time] + 30 , '/', $g4[cookie_domain]);
setcookie(md5('ck_auto'), base64_encode($key), $g4[server_time] + 30 , '/', $g4[cookie_domain]);
으로 적용을 해보았으나 로그아웃이 자동으로 되질 않습니다..ㅠㅠ
팝업 닫으면 로그인 끊어져서 너무 힘들었는데 너무 잘됩니다~~!!