세션에 의한 자동 로그아웃 알림창
본문
세션에 의한 자동 로그아웃 알림창은 common.php 쪽에 넣어야하는걸까요..?
common.php 쪽에서
세션없을때
if ($_SESSION['ss_mb_id']) {
}else{
}
else 부분일거같긴한데.. 자동로그인이 아니라 일반이면 원래 세션에 있던 회원인지 어떻게 구분해야할까요..
개인정보처리방침 뭐 작성하는거때문에 하고있는데 구 그누보드는 몇개 안되어있는게 있어 일일히 수정하려다보니 막혔네요 ㅜㅜ
답변 1
세션이 없으면 로그아웃이 처리되는 겁니다.
그냥 세션이 없으니 로그인하세요.. 이렇게 알람이 뜨도록 되어 있는겁니다.
즉, 원래 세션이 있었는지 여부는 알수 없습니다.
원래 세션이 있었던걸 알려면, 그 세션을 따로 저장해서 비교해야 합니다.
별로 권하고 싶지은 않은 방법이구요..
자동로그인은 쿠키로 저장하구요..
아래 소스 부분이 해당됩니다.
쿠키가 있으면 세션 로그인 처리를 해주는 겁니다.
// 자동로그인 ---------------------------------------
// 회원아이디가 쿠키에 저장되어 있다면 (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 ---------------------------------------
답변을 작성하시기 전에 로그인 해주세요.