회원가입 완료 페이지는 뜨는데 자동 로그인이 안 되는 경우

회원가입 완료 페이지는 뜨는데 자동 로그인이 안 되는 경우

QA

회원가입 완료 페이지는 뜨는데 자동 로그인이 안 되는 경우

본문

안녕하세요.

정상적으로 회원가입도 되고 회원가입 완료 페이지도 잘 뜹니다만 로그인 상태가 아니라서 재로그인을 해야하는 상황입니다.

sns 계정으로 가입하면 또 정상적으로 완료 페이지에서 로그인도 되어있는데요..

sns 계정이 아닌 일반 계정으로 가입을 진행하면 위와 같은 증상이 나오네요.

 

답변주신대로 bbs/register_form_update.php 코드도 확인해 보았습니다만 아래처럼 특별한건 없었습니다.


    // 메일인증 사용하지 않는 경우에만 로그인
    if (!$config['cf_use_email_certify'])
        set_session('ss_mb_id', $mb_id);

 

회원가입 폼 페이지, 완료 페이지가 sub/join_1_2.php, sub/join_1_cp.php 이렇게 되어있는 걸 보니 커스텀으로 제작된 것 같은데요.

혹시 코드에 문제가 있을까요?

파일의 코드도 첨부할게요.

 

sub/join_1_2.php (회원가입 폼 페이지)


<?
    include_once("_common.php");
    include_once(G5_PATH."/_head.php");
   
 
    $has_prf = false;
    if ($w == 'u' && is_file(G5_DATA_PATH.'/member_image/'.substr($member['mb_id'], 0, 2).'/'.get_mb_icon_name($member['mb_id']).'.gif')) {
        $has_prf = true;
    }
?>
 
<form action="<?=G5_URL?>/sub/join.sql.php" method="post" id="frm" name="frm" onsubmit="return fnSubmit_reg(this);" enctype="multipart/form-data">
<input type="hidden" id="w" name="w" value="<?=$w?>">
<input type="hidden" id="idchk" value="<?if($w == ''){ echo "n"; } else if($w == 'u'){ echo "y"; }?>">
<input type="hidden" id="nickchk" value="<?if($w == ''){ echo "n"; } else if($w == 'u'){ echo "y"; }?>">
<input type="hidden" id="mb_type_num" name="mb_type_num" value="1">
    <div id="join_1_2">
        <div class="res_basic">
            <ul class="res_list">
                <li>
                    <div class="res_tit">아이디</div>
                    <div class="res_cont">
                        <?if($w == ''){?>
                            <input type="text" id="mb_id" name="mb_id" value="<?=$member['mb_id']?>" maxlength="20">
                            <button type="button" class="ab" onclick="fnChkText('id');">중복확인</button>
                        <?}else if($w == 'u'){?>
                            <input type="text" name="mb_id" id="mb_id" value="<?=$member['mb_id']?>" readonly>
                        <?}?>
                    </div>
                </li>
                <li>
                    <div class="res_tit">비밀번호</div>
                    <div class="res_cont">
                        <input type="password" id="mb_password" name="mb_password" maxlength="20">
                    </div>
                </li>
                <li>
                    <div class="res_tit">비밀번호 확인</div>
                    <div class="res_cont">
                        <input type="password" id="mb_password_re" name="mb_password_re" maxlength="20">
                    </div>
                </li>
                <li>
                    <div class="res_tit">닉네임</div>
                    <div class="res_cont">
                        <?php if($w == ''){ ?>
                            <input type="text" id="mb_nick" name="mb_nick" value="<?=$member['mb_nick']?>" maxlength="30"><!--  onchange="fnChgText(this.value, 'nick');" -->
                            <button type="button" class="ab" onclick="fnChkText('nick');">중복확인</button>
                        <?php }else if($w == 'u'){ ?>
                            <input type="text" id="mb_nick" name="mb_nick" value="<?=$member['mb_nick']?>" readonly>
                        <?php } ?>
                    </div>
                </li>
                <li>
                    <div class="res_tit">이메일</div>
                    <div class="res_cont">
                        <input type="email" id="mb_email" name="mb_email" value="<?=$member['mb_email']?>" placeholder="*** 개인정보보호를 위한 이메일주소 노출방지 ***" <?=($w == 'u' ? 'readonly' : '')?>>
                    </div>
                </li>
                <li>
                    <div class="res_tit">프로필 이미지 등록 <span>(미 등록 시 기본 이미지로 저장됩니다.)</span></div>
                    <ul class="res_cont">
                        <li class="filebox">
                            <input class="upload-name" type="text" placeholder="<?php echo ($has_prf ? '등록된 이미지가 있습니다.' : ($w == 'u' ? '등록된 이미지가 없습니다.' : '프로필 이미지를 등록해주세요.')); ?>" readonly>
                            <label for="mb_img" class="ab" style="margin-top:0;">이미지 업로드</label>
                            <input type="file" name="mb_img" id="mb_img">
                        </li>
                    </ul>
                </li>
            </ul>
            <div class="btn_basic">
                <!-- <a class="ab" href="<?=G5_URL?>/sub/join_1_cp.php">회원가입</a> -->
                <button class="ab"><?php echo ($w == '' ? '회원가입' : '정보수정'); ?></button>
                <?php if($w == 'u'){ ?>
                <a href="<?=G5_BBS_URL?>/member_confirm.php?url=member_leave.php" class="ab">회원탈퇴</a>
                <?php } ?>
            </div>
        </div>
    </div>
</form>
 
<script>
    $("input[type='file']").on('change',function(){
        if(window.FileReader){
            var filename = $(this)[0].files[0].name;
        } else {
            var filename = $(this).val().split('/').pop().split('\\').pop();
        }
 
        $(this).prev().prev().val(filename);
    });
 
    function fnChkText(type){
        if(type == 'id'){
            var vl = $("#mb_id").val();
            var regExp = /[^A-Za-z0-9-_]/g;
 
            if(vl == ''){
                alert("아이디를 입력해주세요.");
                return false;
            }
           
            if(regExp.test(vl) === true){
                alert("아이디는 영문, 숫자, -, _만 사용하여 입력해주세요.");
                return false;
            }
 
            if(vl.length < 4){
                alert("아이디는 4글자 이상으로 기입해주세요.");
                return false;
            }
        }
 
        if(type == 'nick'){
            var vl = $("#mb_nick").val();
            var regExp = /[^가-힣A-Za-z0-9]/g;
 
            if(vl == ''){
                alert("닉네임을 입력해주세요.");
                return false;
            }
 
            if(regExp.test(vl) === true){
                alert("닉네임은 자음, 모음을 제외한 한글, 영어 및 숫자로만 입력해주세요.");
                return false;
            }
        }
 
        $.ajax({
            type: "POST",
            url: "<?=G5_URL?>/sub/ajax.idchk.php",
            data: {type: type, vl: vl},
            cache: false,
            async: false,
            contentType: "application/x-www-form-urlencoded; UTF-8",
            success: function(data){
                if(type == 'id'){
                    if(data == '0000') {
                        alert("사용 가능한 아이디입니다.");
                        $("#idchk").val("y");
                    }else if(data == '1111') {
                        alert("중복된 아이디가 존재합니다.");
                        $("#idchk").val("n");
                    }
                }
 
                if(type == 'nick'){
                    if(data == '0000') {
                        alert("사용 가능한 닉네임입니다.");
                        $("#nickchk").val("y");
                    }else if(data == '1111') {
                        alert("중복된 닉네임이 존재합니다.");
                        $("#nickchk").val("n");
                    }
                }
            }
        });
        return false;
    }
   
    function fnSubmit_reg(f){
        if($("#w").val() == ''){
            if($("#mb_id").val().length < 4){
                alert("아이디는 4글자 이상으로 기입해주세요.");
                $("#mb_id").focus();
                return false;
            }
 
            if($("#idchk").val() == 'n') {
                alert("아이디 중복검사 작업을 완료해주세요.");
                $("#mb_id").focus();
                return false;
            }
        }
 
        if($("#w").val() == ''){
            if($("#mb_password").val().length < 4){
                alert("비밀번호는 최소 4자가 필요합니다.");
                $("#mb_password").focus();
                return false;
            }else{
                if($("#mb_password").val() != $("#mb_password_re").val() ) {
                    alert("비밀번호가 동일하지 않습니다.");
                    $("#mb_password_re").focus();
                    return false;
                }
            }
        }else if($("#w").val() == 'u'){
            if($("#mb_password").val() != ''){
                if($("#mb_password").val().length < 4){
                    alert("비밀번호는 최소 4자가 필요합니다.");
                    $("#mb_password").focus();
                    return false;
                }else{
                    if($("#mb_password").val() != $("#mb_password_re").val() ) {
                        alert("비밀번호가 동일하지 않습니다.");
                        $("#mb_password_re").focus();
                        return false;
                    }
                }
            }
        }
 
        if($("#nickchk").val() == 'n') {
            alert("닉네임 인증 작업을 완료해주세요.");
            $("#mb_nick").focus();
            return false;
        }
 
        if($("#mb_email").val() == ''){
            alert("이메일을 기입해주세요.");
            $("#mb_email").focus();
            return false;
        }
 
        return true;
    }
</script>
 
<?
    include_once(G5_PATH."/_tail.php");
?>

 

sub/join_1_cp.php (회원가입 완료 페이지)


<?
    include_once("_common.php");
    include_once(G5_PATH."/_head.php");
?>
 
<div id="join_1_cp">
    <div class="complete_box">
        <div class="thum"><img src="<?=G5_THEME_IMG_URL?>/icon_ok.svg" alt=""></div>
        <div class="tit"><b>일반 회원가입</b>이 <br>완료되었습니다.</div>
        <div class="desc">지금 바로 <br />다양한 서비스를 경험해 보세요!</div>
        <div class="btn_basic sml bd"><a href="<?=G5_URL?>" class="ab">홈으로</a></div>
    </div>
</div>
 
<?
    include_once(G5_PATH."/_tail.php");
?>

 

고수분들의 답변을 기다립니다.

이 질문에 댓글 쓰기 :

답변 3

bbs/register_form_update.php 에서

    // 메일인증 사용하지 않는 경우에만 로그인
    if (!$config['cf_use_email_certify']) {
        set_session('ss_mb_id', $mb_id);
        if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);//<---이 코드가 있는지 확인 해서 있다면 

sub/join.sql.php에서 set_session('ss_mb_id', $mb_id); 다음에 넣어주세요

예전 버젼에는 없는 코드이나 원본 코드에 이것이 있다면 로그인 안 된 것으로 나옵니다
    }

균이님 댓글 감사드립니다.
확인해보니 bbs/register_form_update.php 파일에는

// 메일인증 사용하지 않는 경우에만 로그인
    if (!$config['cf_use_email_certify']) {
        set_session('ss_mb_id', $mb_id);
        if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);//<---

이 코드가 확인됐으며 코드를 복사해서
sub/join.sql.php 내부에 아래처럼 붙여 넣었습니다만 증상은 동일하네요..ㅠㅠ


	$sql = " insert into {$g5['member_table']} set 
				mb_id = '{$mb_id}'
				, mb_password = '".get_encrypt_string($mb_password)."'
				, mb_name = '{$mb_name}'
				, mb_nick = '{$mb_nick}'
				, mb_email = '{$mb_email}'
				, mb_type = '{$mb_type}'
				, mb_datetime = now()
				{$add_query}
			";
	sql_query($sql);

	insert_point($mb_id, $config['cf_register_point'], '회원가입 축하', '@member', $mb_id, '회원가입');

	set_session('ss_mb_id', $mb_id);


	if (!$config['cf_use_email_certify']) {
        set_session('ss_mb_id', $mb_id);
        if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);
    }


	$mb = get_member($mb_id);
	
	$notemsg = "";
	switch($mb['mb_level']){
		case 2: 
			$notemsg = '[일반 회원가입] '.$mb['mb_nick'].'('.$mb['mb_id'].')';
		break;
		case 3:
			$notemsg = '[업체 회원가입] <'.$mb['mb_3'].'> '.$mb['mb_nick'].'('.$mb['mb_id'].')';
		break;
	}

이전 질문과 똑같으신거 같은데 

sub/join.sql.php 를 살펴보라고 전에도 조언을 드렸던거 같습니다. 그누페이지로 가는게 아닌 해당 페이지로 완료페이지가 갑니다.

블랙캣77님 다시 한 번 댓글에 대한 감사의 말씀을 드립니다.
이전에 달아주신 댓글에서 위 파일을 확인해 보라고 말씀해주셨었는데요.
어느 부분을 어떻게 봐야할지 잘 몰라서 대댓글에 설명과 해당 파일의 코드 전체를 올려드렸는데
답이 없으셔서 다시 질문글을 등록하게 되었습니다.

시간 괜찮으시다면 다시 한 번 설명 좀 부탁 드려도 될까요?
sub/join.sql.php 코드 첨부합니다!


<?
include_once("_common.php");

if($_SERVER['HTTP_REFERER'] == '') exit("잘못된 접근입니다.");

if($is_admin){
	alert("관리자 계정은 관리자페이지에서 수정해주세요.");
}

$mb_hp = hyphen_hp_number($mb_hp);
$mb_birth = $mb_birth_year."-".$mb_birth_month."-".$mb_birth_day;
$add_query = "";

if($mb_type_num == '2'){
	$add_query .= " , mb_zip1 = '".substr(trim($mb_zip), 0, 3)."' ";
	$add_query .= " , mb_zip2 = '".substr(trim($mb_zip), 3)."' ";
	$add_query .= " , mb_addr1 = '{$mb_addr1}' ";
	$add_query .= " , mb_addr2 = '{$mb_addr2}' ";
	$add_query .= " , mb_hp = '{$mb_hp}' ";
	$add_query .= " , mb_1 = '{$mb_1}' ";
	$add_query .= " , mb_2 = '{$mb_2}' ";
	$add_query .= " , mb_3 = '{$mb_3}' ";
}


$image_regex = "/(\.(gif|jpe?g|png))$/i";
$mb_icon_img = get_mb_icon_name($mb_id).'.gif';


if( $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height'] ){
    $mb_tmp_dir = G5_DATA_PATH.'/member_image/';
    $mb_dir = $mb_tmp_dir.substr($mb_id,0,2);
	@mkdir($mb_tmp_dir, G5_DIR_PERMISSION);
	@chmod($mb_tmp_dir, G5_DIR_PERMISSION);

    $mb_img = '';
	$msg = '';
    if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {
        if (preg_match($image_regex, $_FILES['mb_img']['name'])) {
            if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {
                @mkdir($mb_dir, G5_DIR_PERMISSION);
                @chmod($mb_dir, G5_DIR_PERMISSION);

                $dest_path = $mb_dir.'/'.$mb_icon_img;
                move_uploaded_file($_FILES['mb_img']['tmp_name'], $dest_path);
                chmod($dest_path, G5_FILE_PERMISSION);
                if (file_exists($dest_path)) {
                    $size = @getimagesize($dest_path);
                    if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // gif jpg png 파일이 아니면 올라간 이미지를 삭제한다.
                        @unlink($dest_path);
                    } else if ($size[0] > $config['cf_member_img_width'] || $size[1] > $config['cf_member_img_height']) {
                        $thumb = null;
                        if($size[2] === 2 || $size[2] === 3) {
                            $thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_img_width'], $config['cf_member_img_height'], true, true);
                            if($thumb) {
                                @unlink($dest_path);
                                rename($mb_dir.'/'.$thumb, $dest_path);
                            }
                        }
                        if( !$thumb ){
                            // 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
                            @unlink($dest_path);
                        }
                    }
                    //=================================================================\
                }
            } else {
                $msg .= '회원이미지을 '.number_format($config['cf_member_img_size']).'바이트 이하로 업로드 해주십시오.';
            }
        } else {
            $msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';
        }
    }

	if($msg){
		alert($msg);
	}
}

if($w == '') {
	$sql = " select count(*) as cnt from {$g5['member_table']} where mb_id = '{$mb_id}' ";
	$row_id = sql_fetch($sql);

	if($row_id['cnt'] > 0) {
		alert("이미 존재하는 아이디입니다.");
	}

	if($mb_type_num == '2'){
		//$add_query .= " , st_tp = '0' ";

		$sql = " select count(*) as cnt from {$g5['member_table']} where mb_hp = '{$mb_hp}' ";
		$row_hp = sql_fetch($sql);

		if($row_hp['cnt'] > 0) {
			alert("이미 존재하는 핸드폰 번호입니다.");
		}
	}

	if($mb_type_num == '1'){
		$add_query .= " , mb_level = '2' ";
	}else if($mb_type_num == '2'){
		$add_query .= " , mb_level = '3' ";
	}

	$sql = " insert into {$g5['member_table']} set 
				mb_id = '{$mb_id}'
				, mb_password = '".get_encrypt_string($mb_password)."'
				, mb_name = '{$mb_name}'
				, mb_nick = '{$mb_nick}'
				, mb_email = '{$mb_email}'
				, mb_type = '{$mb_type}'
				, mb_datetime = now()
				{$add_query}
			";
	sql_query($sql);
	insert_point($mb_id, $config['cf_register_point'], '회원가입 축하', '@member', $mb_id, '회원가입');
	set_session('ss_mb_id', $mb_id);
	$mb = get_member($mb_id);
	$notemsg = "";
	switch($mb['mb_level']){
		case 2: 
			$notemsg = '[일반 회원가입] '.$mb['mb_nick'].'('.$mb['mb_id'].')';
		break;
		case 3:
			$notemsg = '[업체 회원가입] <'.$mb['mb_3'].'> '.$mb['mb_nick'].'('.$mb['mb_id'].')';
		break;
	}
	fnTelegramNotice($notemsg);
	goto_url(G5_URL."/sub/join_".$mb_type_num."_cp.php");
}
if($w == 'u') {
	if($mb_password) {
		$add_query .= " , mb_password = '".get_encrypt_string($mb_password)."' ";
	}
	$sql = " update {$g5['member_table']} 
				set mb_name = '{$mb_name}'
					, mb_nick = '{$mb_nick}'
					, mb_email = '{$mb_email}'
					{$add_query}
				where mb_id = '{$mb_id}'
			";
	sql_query($sql);	
	fnTelegramNotice("[회원정보 수정] ".$member['mb_nick']."(".$member['mb_id'].")");
	goto_url(G5_URL."/sub/join_".$mb_type_num."_2.php?w=u");
}
?>

로그인 세션 처리가 빠진게아닐지?

답변을 작성하시기 전에 로그인 해주세요.
전체 16,792
QA 내용 검색

회원로그인

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