db session 무한루프 ???? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

db session 무한루프 ???? 정보

db session 무한루프 ????

본문

서버가 db full로 인해서 죽었다가 살아났어요.
그랬더니, 허걱 db session관리에서 무한루프가 도는 겁니다.
사이트 접속을 하면 계속해서 자동접속하고 세션을 하는 부분만 돌아요.

* db는 모두 복구를 한 상태이고 문제는 없습니다.

왜??? 쿠키와 세션이 엉키는 것일까요???

-- common.php에서 무한루프 도는 부분 ---

// 자동로그인 부분에서 첫로그인에 포인트 부여하던것을 로그인중일때로 변경하면서 코드도 대폭 수정하였습니다.
if ($_SESSION['ss_mb_id']) // 로그인중이라면
{
    $member = get_member($_SESSION['ss_mb_id']);

    // 오늘 처음 로그인 이라면
    if (substr($member['mb_today_login'], 0, 10) != $g4['time_ymd'])
    {
        // 첫 로그인 포인트 지급
        insert_point($member['mb_id'], $config['cf_login_point'], "{$g4['time_ymd']} 첫로그인", "@login", $member['mb_id'], $g4['time_ymd']);

        // 오늘의 로그인이 될 수도 있으며 마지막 로그인일 수도 있음
        // 해당 회원의 접근일시와 IP 를 저장
        $sql = " update {$g4['member_table']} set mb_today_login = '{$g4['time_ymdhis']}', mb_login_ip = '{$_SERVER['REMOTE_ADDR']}' where mb_id = '{$member['mb_id']}' ";
        sql_query($sql);
    }
}
else
{
    // 자동로그인 ---------------------------------------
    // 회원아이디가 쿠키에 저장되어 있다면 (3.27)
    if ($tmp_mb_id = get_cookie("ck_mb_id"))
    {
        // 최고관리자는 자동로그인 금지
        if ($tmp_mb_id != $config['cf_admin'])
        {
            //$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify
            //          from {$g4['member_table']} where mb_id = '$tmp_mb_id' ";
            //$row = sql_fetch($sql);
            $row = get_member("$tmp_mb_id", "mb_password, mb_intercept_date, mb_leave_date, mb_email_certify");
            $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_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 language='javascript'> window.location.reload(); </script>";
                    exit;
                }
            }
            // $row 배열변수 해제
            unset($row);
        }
    }
    // 자동로그인 end ---------------------------------------
}

댓글 전체

그럼 뭐가 문제죠?
자동접속된 상태에서 사이트에 접속하면, 계속해서 페이지를 재실행 합니다.

 echo "<script language='javascript'> window.location.reload(); </script>";
자동로그인 관련 쿠기는 되어 있는데 세션이 생성되지 않으면 그렇게 되죠. 그러니까 세션 폴더의 권한부족이라든지 아니면 다른 원인에 의해 세션 폴더가 없어졌다든지 혹은 여러가지 원인을 생각해봐야 하지 않을까요? 특히 세션 저장과 관련해서요.
전체 202 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT