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 ---------------------------------------
}
그랬더니, 허걱 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 ---------------------------------------
}
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 5개
자동접속된 상태에서 사이트에 접속하면, 계속해서 페이지를 재실행 합니다.
echo "<script language='javascript'> window.location.reload(); </script>";