테스트 사이트 - 개발 중인 베타 버전입니다

로그인을 세션에서 쿠키로 변경하기

1단계. common.lib.php 파일을 다음과 같이 수정합니다.
/lib/common.lib.php
function set_cookie($cookie_name, $value, $expire=-1)
{
    global $g4;
    if($expire != 0) $expire = $g4[server_time] + $expire;
    setcookie(md5($cookie_name), base64_encode($value), $expire, '/', $g4[cookie_domain]);
}

변경된 부분이 파랑색 글자 입니다.
기존의 구문에서 보시면
    setcookie(md5($cookie_name), base64_encode($value), $g4[server_time] + $expire, '/', $g4[cookie_domain]);
현재창이 유효하는 동안에 쿠키를 남겨놓으려면 $expire에 0으로 세팅해야하는데 $expire 를 0 으로 전송해도 server_time + 0 이 되므로 생성하자 마자 삭제가 됩니다.
이를 방지하고자 디폴트를 -1 로 설정해 만약 $expire값이 넘어오지 않는다면 삭제의 의미를
0으로 넘어오면 현재 창이 유효하는동안 0보다 크다면 그시간동안 유효하게 만들게 됩니다.

2단계 login_check.php파일 수정
/bbs/login_check.php
set_session('ss_mb_id', $mb[mb_id]); 이부분을 찾아
set_cookie('cook_mb_id', $mb[mb_id], 0); 로 변경합니다. (cook_mb_id)는 사용자 맘대로..^^;

3단게 logout.php 파일 수정
/bbs/logout.php
session_unset(); // 모든 세션변수를 언레지스터 시켜줌
session_destroy(); // 세션해제함
줄 아래에 다음과 같은 한줄을 추가
set_cookie('cook_mb_id', '');
혹은 set_cookie('cook_mb_id', '', -1); 아까 $expire 디폴트 값이 -1이었으므로 안넣어도되지만..

4단계 common.php 파일 수정
/common.php 295라인쯤..
if ($_SESSION['ss_mb_id']) // 로그인중이라면
{
    $member = get_member($_SESSION['ss_mb_id']);
이부분을 찾아 다음과 같이 수정합니다.
if (get_cookie('cook_mb_id')) // 로그인중이라면
{
    $member = get_member(get_cookie('cook_mb_id'));

이렇게 4단계를 거치면 세션대신에 쿠키로 로그인 컨트롤을 하실 수 있습니다 ^^

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 5개

좋은 정보 감사드립니다. ^^ 그런데

쿠키랑 세션이랑 차이점이 뭔가요?

너무 궁금합니다. 장단점이 있을꺼 같은데..
dyfood.co.kr에 적용함
감사하게 쓰겠습니다.
감사합니다..이것 때문에 고민 많이 했는데...
회원정보수정에도 수정이 필요합니다.

게시판 목록

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.
글쓰기
🐛 버그신고