아이디에 특수문자가 들어가면 register_form_update.php가 제대로 작동하지 않는건
본문
아이디에 특수문자가 들어간채로 회원가입을 하면
쿼리에 정상적으로 데이터 등록은 되는데
register_form_update.php에서
if ($w == '') {
goto_url(G5_HTTP_BBS_URL.'/register_result.php');
이부분 register_result.php로 이동하는부분이 작동하지 않습니다.
특수문자 없이 했을땐 정상 작동하는데
아이디를 이메일 형식으로 진행중이라서요 ㅠㅠ
도무지 질문글에 찾아봐도 비슷한 내용이 나오지않아 어떻게 하면 될지 문의드립니다.
답변 5
다음과 같이 해보시는건 어떨까 합니다.
url 인코딩
header('Content-Type: text/html; charset=utf-8');
$encoded_id = urlencode($user_id); // $user_id에는 특수문자가 포함된 아이디가 들어갑니다.
goto_url(G5_HTTP_BBS_URL.'/register_result.php?id=' . $encoded_id);
위와 같이 해도 해결이 되지 않으신다면 디버깅 및 오류메세지를 확인하셔서 해결하시는것도 하나의 해결방법 일 것으로 생각합니다.
디버깅 출력
if ($w == '') {
$redirect_url = G5_HTTP_BBS_URL.'/register_result.php';
echo "Redirecting to: $redirect_url"; // 디버깅용 출력
goto_url($redirect_url);
}
로그확인
error_reporting(E_ALL);
ini_set('display_errors', 'On');
!-->!-->!-->
아이디에 특수문자가 들어갔다면, get_member 함수에서 숫자와 영문 그리고 _ 를 제외한 문자를 걸러내기 때문에 로그인이 되지 않습니다.
때문에 회원가입 후 result 페이지로 넘어가기 전에 로그인이 풀려버려서 메인페이지로 이동하게 됩니다.
때문에 이메일형식을 아이디로 사용하고 자 한다면,
common.lib.php 파일의 get_member 함수의 정규식을
preg_match("/[^0-9a-z@_.]/i", $mb_id) 정도로 수정해 주시면 될 것 같습니다.
안녕하세요.
/bbs/ajax.mb_id.php 파일을 보시면 관련 함수들을 수정을 하셔야 할거 같습니다~
if ($msg = empty_mb_id($mb_id)) die($msg);
if ($msg = valid_mb_id($mb_id)) die($msg);
if ($msg = count_mb_id($mb_id)) die($msg);
if ($msg = exist_mb_id($mb_id)) die($msg);
if ($msg = reserve_mb_id($mb_id)) die($msg);
중간에 하나씩 브레이크를 걸어서 에러 코드를 찍으면서 확인을 해야 할거 같습니다~ (페이지 및 콘솔)
<?php
error_reporting( E_ALL );
ini_set( "display_errors", 1 );
?>
당연한것 아닌가요?? 메일형식은 특수문자를쓸수없습니다.
알파벳 (a-z, A-Z) 및 숫자 (0-9) 만 허용합니다. 그렇니 특수문자가 들어간다면 거부해야하는게 맞지요.
네 그래서 현재 회원 폼에서는 이메일 로그인 하기 위한 로직이 별도로 필요한다는거에요..관련 스킨도 있으니 참조하시면됩니다.
https://sir.kr/g5_skin?sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%9D%B4%EB%A9%94%EC%9D%BC