세션에 의한 자동 로그아웃 알림창 채택완료
LovelyCaT
3년 전
조회 4,170
세션에 의한 자동 로그아웃 알림창은 common.php 쪽에 넣어야하는걸까요..?
common.php 쪽에서
세션없을때
if ($_SESSION['ss_mb_id']) {
}else{
}
else 부분일거같긴한데.. 자동로그인이 아니라 일반이면 원래 세션에 있던 회원인지 어떻게 구분해야할까요..
개인정보처리방침 뭐 작성하는거때문에 하고있는데 구 그누보드는 몇개 안되어있는게 있어 일일히 수정하려다보니 막혔네요 ㅜㅜ
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
3년 전
세션이 없으면 로그아웃이 처리되는 겁니다.
그냥 세션이 없으니 로그인하세요.. 이렇게 알람이 뜨도록 되어 있는겁니다.
즉, 원래 세션이 있었는지 여부는 알수 없습니다.
원래 세션이 있었던걸 알려면, 그 세션을 따로 저장해서 비교해야 합니다.
별로 권하고 싶지은 않은 방법이구요..
자동로그인은 쿠키로 저장하구요..
아래 소스 부분이 해당됩니다.
쿠키가 있으면 세션 로그인 처리를 해주는 겁니다.
</p>
<p> // 자동로그인 ---------------------------------------</p>
<p> // 회원아이디가 쿠키에 저장되어 있다면 (3.27)</p>
<p> if ($tmp_mb_id = get_cookie('ck_mb_id')) {</p>
<p> </p>
<p> $tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20);</p>
<p> // 최고관리자는 자동로그인 금지</p>
<p> if (strtolower($tmp_mb_id) !== strtolower($config['cf_admin'])) {</p>
<p> $sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g5['member_table']} where mb_id = '{$tmp_mb_id}' ";</p>
<p> $row = sql_fetch($sql);</p>
<p> if($row['mb_password']){</p>
<p> $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);</p>
<p> // 쿠키에 저장된 키와 같다면</p>
<p> $tmp_key = get_cookie('ck_auto');</p>
<p> if ($tmp_key === $key && $tmp_key) {</p>
<p> // 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면</p>
<p> if ($row['mb_intercept_date'] == '' &&</p>
<p> $row['mb_leave_date'] == '' &&</p>
<p> (!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) {</p>
<p> // 세션에 회원아이디를 저장하여 로그인으로 간주</p>
<p> set_session('ss_mb_id', $tmp_mb_id);</p>
<p> </p>
<p> // 페이지를 재실행</p>
<p> echo "<script type='text/javascript'> window.location.reload(); </script>";</p>
<p> exit;</p>
<p> }</p>
<p> }</p>
<p> }</p>
<p> // $row 배열변수 해제</p>
<p> unset($row);</p>
<p> }</p>
<p> }</p>
<p> // 자동로그인 end ---------------------------------------</p>
<p>
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인