채택완료

세션에 의한 자동 로그아웃 알림창

세션에 의한 자동 로그아웃 알림창은 common.php 쪽에 넣어야하는걸까요..?

common.php 쪽에서

세션없을때

if ($_SESSION['ss_mb_id']) {

}else{ 

 

}

else 부분일거같긴한데.. 자동로그인이 아니라 일반이면 원래 세션에 있던 회원인지 어떻게 구분해야할까요..

개인정보처리방침 뭐 작성하는거때문에 하고있는데 구 그누보드는 몇개 안되어있는게 있어 일일히 수정하려다보니 막혔네요 ㅜㅜ

답변 1개

채택된 답변
+20 포인트

세션이 없으면 로그아웃이 처리되는 겁니다.

그냥 세션이 없으니 로그인하세요.. 이렇게 알람이 뜨도록 되어 있는겁니다.

즉, 원래 세션이 있었는지 여부는 알수 없습니다.

원래 세션이 있었던걸 알려면, 그 세션을 따로 저장해서 비교해야 합니다.

별로 권하고 싶지은 않은 방법이구요..

 

자동로그인은 쿠키로 저장하구요..

아래 소스 부분이 해당됩니다.

쿠키가 있으면 세션 로그인 처리를 해주는 겁니다.

Copy
// 자동로그인 ---------------------------------------

    // 회원아이디가 쿠키에 저장되어 있다면 (3.27)

    if ($tmp_mb_id = get_cookie('ck_mb_id')) {

 

        $tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20);

        // 최고관리자는 자동로그인 금지

        if (strtolower($tmp_mb_id) !== strtolower($config['cf_admin'])) {

            $sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g5['member_table']} where mb_id = '{$tmp_mb_id}' ";

            $row = sql_fetch($sql);

            if($row['mb_password']){

                $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);

                // 쿠키에 저장된 키와 같다면

                $tmp_key = get_cookie('ck_auto');

                if ($tmp_key === $key && $tmp_key) {

                    // 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면

                    if ($row['mb_intercept_date'] == '' &&

                        $row['mb_leave_date'] == '' &&

                        (!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) {

                        // 세션에 회원아이디를 저장하여 로그인으로 간주

                        set_session('ss_mb_id', $tmp_mb_id);

 

                        // 페이지를 재실행

                        echo "<script type='text/javascript'> window.location.reload(); </script>";

                        exit;

                    }

                }

            }

            // $row 배열변수 해제

            unset($row);

        }

    }

    // 자동로그인 end ---------------------------------------

답변을 작성하려면 로그인이 필요합니다.