회원가입 폼을 수정하였는데 가입 완료 후 아무런 경고창 없이 메인으로 이동합니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
회원가입 폼을 수정하였는데 가입 완료 후 아무런 경고창 없이 메인으로 이동합니다.

QA

회원가입 폼을 수정하였는데 가입 완료 후 아무런 경고창 없이 메인으로 이동합니다.

본문

https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=134

 

해당 팁을 참고하여 아이디를 메일 형식으로 받는 식으로 코드를 수정하였습니다.

그런데 register.lib.php에서 기존에 

function valid_mb_id($reg_mb_id)
{
    if (preg_match("/[^0-9a-z_]+/i", $reg_mb_id))
        return "회원아이디는 영문자, 숫자, _ 만 입력하세요.";
    else
        return "";
}
 

이렇게 되어있는 부분을 

function valid_mb_id($reg_mb_id)

{

    if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/i", $reg_mb_id))

        return "이메일 형식에 맞지 않습니다.";

    else

        return "";

}

이렇게 변경하니 

register_form_update.php 에 

goto_url(G5_HTTP_BBS_URL.'/register_result.php'); 이 부분을 거치지 않고

바로 메인으로 이동해버리는데 무엇이 문제일까요? 회원가입은 정상적으로 됩니다.

 

위 register.lib.php 코드 부분을 원래 소스로 돌리면 문제 없이 가입완료 페이지가 뜹니다

이 질문에 댓글 쓰기 :

답변 3

register_form_update.php 소스코드 하단에는 어떤 소스코드 있나요?


if ($w == '') {
    $sql = " insert into {$g5['member_table']}
                set mb_id = '{$mb_id}',
                     mb_password = '".get_encrypt_string($mb_password)."',
                     //중략..

    // 이메일 인증을 사용하지 않는다면 이메일 인증시간을 바로 넣는다
    if (!$config['cf_use_email_certify'])
        $sql .= " , mb_email_certify = '".G5_TIME_YMDHIS."' ";
    sql_query($sql);

    // 회원가입 포인트 부여
    insert_point($mb_id, $config['cf_register_point'], '회원가입 축하', '@member', $mb_id, '회원가입');

    // 추천인에게 포인트 부여
    if ($config['cf_use_recommend'] && $mb_recommend)
        insert_point($mb_recommend, $config['cf_recommend_point'], $mb_id.'의 추천인', '@member', $mb_recommend, $mb_id.' 추천');

    // 회원님께 메일 발송
    if ($config['cf_email_mb_member']) {
        $subject = '['.$config['cf_title'].'] 회원가입을 축하드립니다.';

        // 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
        if ($config['cf_use_email_certify']) {
            $mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
            sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
            $certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
        }

        ob_start();
        include_once ('./register_form_update_mail1.php');
        $content = ob_get_contents();
        ob_end_clean();
        
        $content = run_replace('register_form_update_mail_mb_content', $content, $mb_id);

        mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);

        run_event('register_form_update_send_mb_mail', $config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content);

        // 메일인증을 사용하는 경우 가입메일에 인증 url이 있으므로 인증메일을 다시 발송되지 않도록 함
        if($config['cf_use_email_certify'])
            $old_email = $mb_email;
    }

    // 최고관리자님께 메일 발송
    if ($config['cf_email_mb_super_admin']) {
        $subject = run_replace('register_form_update_mail_admin_subject', '['.$config['cf_title'].'] '.$mb_nick .' 님께서 회원으로 가입하셨습니다.', $mb_id, $mb_nick);

        ob_start();
        include_once ('./register_form_update_mail2.php');
        $content = ob_get_contents();
        ob_end_clean();
        
        $content = run_replace('register_form_update_mail_admin_content', $content, $mb_id);

        mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);

        run_event('register_form_update_send_admin_mail', $mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content);
    }

    // 메일인증 사용하지 않는 경우에만 로그인
    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);
    }

    set_session('ss_mb_reg', $mb_id);

    if($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함)
        insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
    }else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
        insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_sess
하단 소스는 이렇습니다.

해결했습니다!
register.lib.php 내 function valid_mb_id($reg_mb_id)
{
    if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/i", $reg_mb_id))
        return "이메일 형식에 맞지 않습니다.";
    else
        return "";
}
양식과 common.lib.php 회원 정보 항목에 있는 id 양식 값이 맞지않아 생긴 오류였습니다!

그러면 제일 하단에 goto_url(G5_HTTP_BBS_URL.'/register_result.php'); 주석 처리 부터 하시고
소스코드 내에서 에러 나오는지 좀 확인 해보셔야될것 같은데요

이렇게 말씀해주신게 큰 도움이 됏습니다 감사합니다

다행입니다~ 작업 하실때 주소 이동하는 함수는 주석 처리 부터 하고 윗부분에 alert 이나 검증 하는 함수 등 있어여 그부분 주석처리 꼭 해주셔야되요
그리고 sql_query($sql,true); 하면 에러가 표시되구요

회원가입 폼의 register_form_update.php에서

goto_url 함수를 호출하기 전에 다른 코드가 실행되거나,

반환값을 잘못 처리하면서 발생했을 가능성이 높습니다.

지금 확인해보니 메인으로 튕기는 것은 물론 비밀번호가 틀리다고 계속 뜹니다.

register.lib.php 기존 소스로 복원하면 또 정상적으로 가입도 되고 가입완료페이지도 뜨고 로그인했을 때 패스워드가 틀렸다는 경고창도 뜨지않네요...

register.lib.php 에서는 하단 영역만 변경하였습니다.

function valid_mb_id($reg_mb_id)
{
    if (preg_match("/[^0-9a-z_]+/i", $reg_mb_id))
        return "회원아이디는 영문자, 숫자, _ 만 입력하세요.";
    else
        return "";
}

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

회원로그인

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