회원가입 폼을 수정하였는데 가입 완료 후 아무런 경고창 없이 메인으로 이동합니다.
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 코드 부분을 원래 소스로 돌리면 문제 없이 가입완료 페이지가 뜹니다
답변 2개 / 댓글 6개
register_form_update.php 소스코드 하단에는 어떤 소스코드 있나요?
답변에 대한 댓글 6개
소스코드 내에서 에러 나오는지 좀 확인 해보셔야될것 같은데요
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'); 주석 처리 부터 하시고
소스코드 내에서 에러 나오는지 좀 확인 해보셔야될것 같은데요
이렇게 말씀해주신게 큰 도움이 됏습니다 감사합니다
그리고 sql_query($sql,true); 하면 에러가 표시되구요
지금 확인해보니 메인으로 튕기는 것은 물론 비밀번호가 틀리다고 계속 뜹니다.
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 "";
}
답변을 작성하려면 로그인이 필요합니다.
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
[/code] 하단 소스는 이렇습니다.