테스트 사이트 - 개발 중인 베타 버전입니다

login_check 무한알러트 질문 채택완료

merci 6년 전 조회 5,258

로그인을 할 때 정보를 잘못 입력하면 뜨는 알러트창이 무한으로 반복되는 현상이 있습니다

 

login_check.php 파일을 건드린적도 없는데 이런현상이 발생하고 있어 exit도 걸어보고 알러트 밑에 페이지 이동을 넣어봤는데도 계속 알러트창이 뜹니다

 

뭐가 잘못된 걸까요?

 

</p>

<p><?php

include_once('./_common.php');</p>

<p>$g5['title'] = "로그인 검사";</p>

<p>$mb_id       = trim($_POST['mb_id']);

$mb_password = trim($_POST['mb_password']);</p>

<p>if (!$mb_id || !$mb_password){

    alert('회원아이디나 비밀번호가 공백이면 안됩니다.');

    

}</p>

<p>

$mb = get_member($mb_id);</p>

<p>// 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는

// 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서입니다.

// 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.

if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) {

    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');

}</p>

<p>// 차단된 아이디인가?

if ($mb['mb_intercept_date'] && $mb['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {

    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);

    alert('회원님의 아이디는 접근이 금지되어 있습니다.\n처리일 : '.$date);

}</p>

<p>// 탈퇴한 아이디인가?

if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME)) {

    $date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_leave_date']);

    alert('탈퇴한 아이디이므로 접근하실 수 없습니다.\n탈퇴일 : '.$date);

}</p>

<p>if ($config['cf_use_email_certify'] && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {

    $ckey = md5($mb['mb_ip'].$mb['mb_datetime']);

    confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL.'/register_email.php?mb_id='.$mb_id.'&ckey='.$ckey);

}</p>

<p>@include_once($member_skin_path.'/login_check.skin.php');</p>

<p>// 회원아이디 세션 생성

set_session('ss_mb_id', $mb['mb_id']);

// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106

set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));</p>

<p>// 포인트 체크

if($config['cf_use_point']) {

    $sum_point = get_point_sum($mb['mb_id']);</p>

<p>    $sql= " update {$g5['member_table']} set mb_point = '$sum_point' where mb_id = '{$mb['mb_id']}' ";

    sql_query($sql);

}</p>

<p>// 3.26

// 아이디 쿠키에 한달간 저장

if ($auto_login) {

    // 3.27

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

    // 쿠키 한달간 저장

    $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);

    set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);

    set_cookie('ck_auto', $key, 86400 * 31);

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

} else {

    set_cookie('ck_mb_id', '', 0);

    set_cookie('ck_auto', '', 0);

}</p>

<p>if ($url) {

    // url 체크

    check_url_host($url);</p>

<p>    $link = urldecode($url);

    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)

    if (preg_match("/\?/", $link))

        $split= "&amp;";

    else

        $split= "?";</p>

<p>    // $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김

    foreach($_POST as $key=>$value) {

        if ($key != 'mb_id' && $key != 'mb_password' && $key != 'x' && $key != 'y' && $key != 'url') {

            $link .= "$split$key=$value";

            $split = "&amp;";

        }

    }

} else  {

    $link = G5_URL;

}</p>

<p>goto_url($link);

?>

 </p>

<p>

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

답변 2개

채택된 답변
+20 포인트
d
6년 전

혹시 ajax 방식의 로그인이라면 script 부분을 살펴보시고.

alert은 자체로 페이지 이동을 합니다.

alert 위에 이동을 걸으셔야합니다.

해당 페이지는 특별히 loop 걸릴 일이 없습니다만.

넘기는 쪽 페이지를 먼저 살펴보세요.

로그인 후 평가할 수 있습니다

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

이렇게 봐서는 알수가 없네요 

로그인 후 평가할 수 있습니다

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

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

로그인