2026, 새로운 도약을 시작합니다.

아이디에 특수문자가 들어가면 register_form_update.php가 제대로 작동하지 않는건 채택완료

아이디에 특수문자가 들어간채로 회원가입을 하면

쿼리에 정상적으로 데이터 등록은 되는데

 register_form_update.php에서

if ($w == '') {

    goto_url(G5_HTTP_BBS_URL.'/register_result.php');

이부분 register_result.php로 이동하는부분이 작동하지 않습니다.

특수문자 없이 했을땐 정상 작동하는데

아이디를 이메일 형식으로 진행중이라서요 ㅠㅠ

도무지 질문글에 찾아봐도 비슷한 내용이 나오지않아 어떻게 하면 될지 문의드립니다.

답변 5개

채택된 답변
+20 포인트

다음과 같이 해보시는건 어떨까 합니다.

url 인코딩

Copy


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);

위와 같이 해도 해결이 되지 않으신다면 디버깅 및 오류메세지를 확인하셔서 해결하시는것도 하나의 해결방법 일 것으로 생각합니다.

디버깅 출력

Copy


if ($w == '') {

    $redirect_url = G5_HTTP_BBS_URL.'/register_result.php';

    echo "Redirecting to: $redirect_url"; // 디버깅용 출력

    goto_url($redirect_url);

}

로그확인

Copy


error_reporting(E_ALL);

ini_set('display_errors', 'On');
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

로그는 콘솔에서 확인하는건가요???
콘솔에서 확인을 하셔도 되고, php코드안에 위의 코드를 적용하시면 에러가 있으면 출력해줍니다.

댓글을 작성하려면 로그인이 필요합니다.

아이디에 특수문자가 들어갔다면, 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 쪽은 이렇게 되어있는데 어느부분을 수정해야할까용??...ㅠㅠㅠ
if (preg_match("/[^0-9a-z_]+/i", $mb_id))
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개

register_form_update.php
에 해당 내용을 삽입하고 다시 돌려봤는데

너무 순식간에 페이지가 메인페이지로 넘어가져서 콘솔에 제대로 뜨는지 모르겠습니당....
제가 너무 문외한이라 조금만 더 설명가능할까요....... 죄송합니다
왜 특수문자만 넣으면 이럴까요....


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개

저기서 valid_mb_id 부분을 삭제하면 될까요??
해당 php는 처음보는 php인데 가입시 자동으로 실행되는 phg인가용
한번 삭제해보겠습니다
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);


이부분을 전부 삭제해도 동일하게
register_result.php로 이동하지 않고
바로 메인페이지로 튕겨나갑니다 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고