아이디에 특수문자가 들어가면 register_form_update.php가 제대로 작동하지 않는건 채택완료
아이디에 특수문자가 들어간채로 회원가입을 하면
쿼리에 정상적으로 데이터 등록은 되는데
register_form_update.php에서
if ($w == '') {
goto_url(G5_HTTP_BBS_URL.'/register_result.php');
이부분 register_result.php로 이동하는부분이 작동하지 않습니다.
특수문자 없이 했을땐 정상 작동하는데
아이디를 이메일 형식으로 진행중이라서요 ㅠㅠ
도무지 질문글에 찾아봐도 비슷한 내용이 나오지않아 어떻게 하면 될지 문의드립니다.
답변 5개
다음과 같이 해보시는건 어떨까 합니다.
url 인코딩
</p>
<p>header('Content-Type: text/html; charset=utf-8');</p>
<p> </p>
<p>$encoded_id = urlencode($user_id); // $user_id에는 특수문자가 포함된 아이디가 들어갑니다.
goto_url(G5_HTTP_BBS_URL.'/register_result.php?id=' . $encoded_id);
위와 같이 해도 해결이 되지 않으신다면 디버깅 및 오류메세지를 확인하셔서 해결하시는것도 하나의 해결방법 일 것으로 생각합니다.
디버깅 출력
</p>
<p>if ($w == '') {
$redirect_url = G5_HTTP_BBS_URL.'/register_result.php';
echo "Redirecting to: $redirect_url"; // 디버깅용 출력
goto_url($redirect_url);
}
로그확인
</p>
<p>error_reporting(E_ALL);
ini_set('display_errors', 'On');
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
아이디에 특수문자가 들어갔다면, get_member 함수에서 숫자와 영문 그리고 _ 를 제외한 문자를 걸러내기 때문에 로그인이 되지 않습니다.
때문에 회원가입 후 result 페이지로 넘어가기 전에 로그인이 풀려버려서 메인페이지로 이동하게 됩니다.
때문에 이메일형식을 아이디로 사용하고 자 한다면,
common.lib.php 파일의 get_member 함수의 정규식을
preg_match("/[^0-9a-z@_.]/i", $mb_id) 정도로 수정해 주시면 될 것 같습니다.
답변에 대한 댓글 4개
function get_member($mb_id, $fields='*', $is_cache=false)
{
global $g5;
if (preg_match("/[^0-9a-z_]+/i", $mb_id))
return array();
static $cache = array();
$key = md5($fields);
if( $is_cache && isset($cache[$mb_id]) && isset($cache[$mb_id][$key]) ){
return $cache[$mb_id][$key];
}
$sql = " select $fields from {$g5['member_table']} where mb_id = TRIM('$mb_id') ";
$cache[$mb_id][$key] = run_replace('get_member', sql_fetch($sql), $mb_id, $fields, $is_cache);
return $cache[$mb_id][$key];
}
이미 common.lib
get_member 쪽은 이렇게 되어있는데 어느부분을 수정해야할까용??...ㅠㅠㅠ
return array();
이 부분에 걸려서 회원정보가 빈배열로 리턴이 되므로,
회원 로그인이 풀리게 됩니다.
preg_match("/[^0-9a-z@_.]/i", $mb_id) 정도로 수정해 주시면 될 것 같네요.
댓글을 작성하려면 로그인이 필요합니다.
당연한것 아닌가요?? 메일형식은 특수문자를쓸수없습니다.
알파벳 (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
댓글을 작성하려면 로그인이 필요합니다.
중간에 하나씩 브레이크를 걸어서 에러 코드를 찍으면서 확인을 해야 할거 같습니다~ (페이지 및 콘솔)
<?php
error_reporting( E_ALL );
ini_set( "display_errors", 1 );
?>
답변에 대한 댓글 1개
에 해당 내용을 삽입하고 다시 돌려봤는데
너무 순식간에 페이지가 메인페이지로 넘어가져서 콘솔에 제대로 뜨는지 모르겠습니당....
제가 너무 문외한이라 조금만 더 설명가능할까요....... 죄송합니다
왜 특수문자만 넣으면 이럴까요....
https://sir.kr/qa/404384
전에 동일한 분도 계셨는데 그냥 특수문자 계정을 삭제하는식으로 처리된것 밖에 못보겠더라구요 ㅠㅠ,,,,
댓글을 작성하려면 로그인이 필요합니다.
안녕하세요.
/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);
답변에 대한 댓글 2개
해당 php는 처음보는 php인데 가입시 자동으로 실행되는 phg인가용
한번 삭제해보겠습니다
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);
이부분을 전부 삭제해도 동일하게
register_result.php로 이동하지 않고
바로 메인페이지로 튕겨나갑니다 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인