눈

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

· 2009-04-20 (월) 16:09:25 · 4801 · 5

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개

2009-04-20 (월) 20:36:15
좋은 정보 감사드립니다. ^^ 그런데

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

너무 궁금합니다. 장단점이 있을꺼 같은데..
dyfood.co.kr에 적용함
2009-10-27 (화) 00:07:28
감사하게 쓰겠습니다.
감사합니다..이것 때문에 고민 많이 했는데...
회원정보수정에도 수정이 필요합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

3,309건

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

+
제목 글쓴이 날짜 조회
09-05-01 조회 6,777
09-05-01 조회 3,255
09-05-01 조회 2,902
09-05-01 조회 3,970
09-05-01 조회 2,555
09-04-30 조회 5,101
09-04-27 조회 6,630
09-04-27 조회 3,962
09-04-23 조회 2,396
09-04-23 조회 3,826
09-04-23 조회 4,067
09-04-22 조회 4,541
09-04-22 조회 2,919
09-04-22 조회 3,600
09-04-21 조회 4,622
09-04-21 조회 4,532
09-04-20 조회 6,100
09-04-20 조회 3,942
09-04-20 조회 4,802
09-04-19 조회 2,398