로그인을 세션에서 쿠키로 변경하기 정보
로그인을 세션에서 쿠키로 변경하기본문
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단계를 거치면 세션대신에 쿠키로 로그인 컨트롤을 하실 수 있습니다 ^^
3
댓글 5개
쿠키랑 세션이랑 차이점이 뭔가요?
너무 궁금합니다. 장단점이 있을꺼 같은데..