테스트 사이트 - 개발 중인 베타 버전입니다

register_form_update.php 질문 채택완료

시작123132 1년 전 조회 1,954

원래는 

register > register_form >register_form_update 로 넘어가는 과정인데 

register >register_form_update 로  중간부분을 건너뛰고 가게끔 해서 회원가입까지는 되는데

원래라면 가입 후 자동 로그인 및 축하페이지(result 페이지)가 뜨는데 

그 부분이 구현되지 않고 바로 메인페이지로 튕기며 가입한 계정 자동 로그인도 안되어있습니다 ㅠㅠ

 

가입은 완료 되는데  이후 행동이 진행되지 않는부분 어디서 어떻게 수정해야할까요..??

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

답변 2개

채택된 답변
+20 포인트

$w 라는 변수의 값이 유효한 값을 확인해봐야 합니다. 단순히 유효성 검사를 통해 resulting 되는 것일 수도 있어서 정확한 변수 할당 로직 또는  Callback 값을 확인해봐야 합니다. 그런데 $w == '' 라면 값이 NULL도 아니고 유효해서도 안된다면 $w 라는 변수를 역순으로 분석해 가셔야 합니다. $w라는 변수가 도대체 무엇을 관장하고 있는지에 대해서 파악이 되어야 원인을 알 수 있을 것으로 보입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 25개

시작123132
1년 전
버튼에
<?php echo $w==''?'가입하기':'정보수정'; ?>
이게 없어서 그런줄 알고 추가했는데도 작동을 안하네요,,,,,,,,,,
ㅠㅠㅠㅠ 도저히 모르겠습니다.ㅇ....
너를보았다
1년 전
음...;; 지금 register_result.php에 영향을 주는 변수라 위의 소스가 그렇게 개발되었을 텐데...말씀하신 삼항연산자의 역활은 상관없는 개발 부분입니다;

[code]<?php $w == "" ? "가입하기" : "정보수정" ?>[/code]

추가하신 위의 소스를 해석하자면 이런 의미 입니다.
`$w 변수가 빈값이면 가입하기 라는 문자열을 $w 변수에 할당하고 그것이 아니면 정보수정 문자열을 $w에 할당해라.`
입니다.

즉, 기능과 무관한 것이고요. $w의 변수를 통해 register_result.php를 include 한다는 것은 $w 변수는 유효성 검사와 연관이 있는 것으로 보입니다. 즉, 가입시 입력해야 되는 필수 값에 따라 $w 변수에 값이 할당되고 안되고가 있는 로직이 있을 거에요.

쉽게 말씀드리면 $w 변수에 값이 있으면 유효성 검사 통과 못한 값, $w 변수에 값이 없으면 유효성 검사에 통과하여 아무런 값을 할당하지 않은 상태를 의미하는 것이라 볼 수 있겠습니다. 제가 지금 근무중이라 소스를 분석해드릴 순 없는데...위의 내용을 참고하셔서 소스를 분석해보세요.

그리고 위의 알려주신 경로에 대해 가입하기에서 Alert가 뜬다고 제가 알려드렸는데 확인 해보니 register_form_update.php로 경로가 잘못 적용되었습니다.

제가 판단하기론 가입하기 버튼의 이동경로는 register_form.php 이며 그 페이지에 이용약관 및 개인정보처리방침, 회원정보 입력란이 구성되어야 할 것이고 그리고 하단에 회원가입 버튼을 클릭하거나 이벤트가 발생한다면 register_form_update.php로 파라미터가 전달되어야 하고 그 파라미터 내에 필수값이 올바르게 담겨서 전달되었는지 검사하는 로직이 필요하고요. 그다음에 회원가입 완료 페이지인 register_result.php 로 완료처리 하면 될 것으로 보입니다.

아래는 플로우 참고입니다.

가입하기 -> register_form.php(회원가입 입력폼, 약관동의 구성된 페이지) -> 회원가입 버튼 클릭 -> register_form_update.php(필수값 유효성 검사-Agree, Member Information Parameter) -> Database member Table에 데이터 저장(insert) -> register_result.php -> 결과 노출
시작123132
1년 전
지금 극단적으로 register_form.php를 압축시켜서
register.php에 입력해보았습니다. (기존것 + 압축시킨것)

폼의 소스는 양쪽다 동일합니다.(css용 class만 차이가있는데 이는 관련이 없는것으로 확인했습니다.)

<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">



아이디와 비밀번호를 입력하는 input도 css제외 모두 동일하게 설정했고
회원가입 버튼까지 동일하게 설정했는데도

아래쪽만 회원가입하면 result로 넘어가고
원래건 안넘어가지는데 대체 뭐가 문제일까요........

보시면 하단에;; 이상하게 구현시켜놓은건 잘되고 위에것만 안되네요 ㅠㅠ,,,,
시작123132
1년 전
해당 register.php 페이지에
<?php echo $register_action_url ?>

$register_action_url = G5_HTTPS_BBS_URL.'/register_form_update.php';
로 설정해두어서 바로 업데이트로 연결되는 방식입니다.
(추가 정보 입력은 필요없고
register.lib 에서 진행되는 유효성 검사와 기타 결과 도출만이 필요한 상황이라서요..)
너를보았다
1년 전
바닐라(원본) 소스 의 경우 제가 위에 언급한 바와 같이 유효성 검사 후 통과시 빈값, 통과하지 못했을 시 무엇인가의 값이 $w 변수에 할당됩니다. 따라서, $w 변수에 무엇을 할당하는지 소스를 분석해야 합니다. 그리고 시작님께서 개발하신 부분은 원하는 방향으로 개발을 하셨기 때문에 원리에 따른 결과라 보여지고요. 그래서 어떠한 큰 문제가 있느냐 없느냐를 떠나 DB에 데이터 삽입이 잘되고 구동에 특별한 이슈가 없으면 Passing 하셔도 무방하다고 보여집니다. 성인인증이나, 휴대폰인증, 이메일 인증 같은 중요한 값들이 있으면 다르겠지만요.
시작123132
1년 전
원인을 찾은것 같습니다.
해보니 이메일 형식으로 계정을 만들면
(@gmail.com) 등이 들어가면 결과값이 안나오네요....
너를보았다
1년 전
직접 찾으셨네요. 아이디 생성시 이메일 계정으로 입력해서 그런거라면...추가적으로 개발을 하셔야겠네요.
시작123132
1년 전
특수문자가 들어가면
쿼리에 등록은 되는데
result 페이지 노출이 안되는 부분은 어떻게 해결할 수 있을지 여쭤봐도 될까요,...?
시작123132
1년 전
아 넵.. 제가 찾아보겠습니다 너무 감사했습니다 진짜 큰 도움되고
구조에 대해서 설명해주신 덕분에 좀더 공부가 된 것 같습니다.
너를보았다
1년 전
흠. result 페이지에 이메일 계정 아이디가 @에 제대로 노출이 안된다는 말씀이신건가요?
너를보았다
1년 전
도움이 되었다니 다행이네요. ^^
시작123132
1년 전
아뇨 예를 들어서

아이디가 abcdef
로 진행하면 정상적으로
register_result.php까지 연결이되는데


@나 . 같이 이메일에 사용되는 특수문자가 들어가면
ex) abcdef@gmail.com
그럼 register_result.php로 연결이 안되고 바로 메인 페이지로 튕겨나갑니다..
쿼리에서 가입은 진행되구요
너를보았다
1년 전
아...특수 문자를 asc code로 변환하여 저장하고 불러와 노출할 때에는 다시 asc code에서 문자로 변환하면 되는데 제가 볼때에는 그런 복잡한 형식은 필요가 없고 파라미터를 전달받고 쿼리가 실해오디는 구간에 result 관련 경로 이동 지정이 있을 것으로 보입니다.

그리고 DB Column 타입도 변경하셔야 하고요...
이메일계정의 Column 타입을 varchar(100 ~ 255)로 수정해주셔야 할 것 같네요. 통상적으로 이메일 계정의 경우 varchar(150) 타입으로 많이 설정합니다.
시작123132
1년 전
네 쿼리에서 글자수가 20자까지만 되는건
SELECT sc.TABLE_SCHEMA, sc.TABLE_NAME, sc.COLUMN_NAME, sc.COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS AS sc
WHERE COLUMN_NAME='mb_id

저거를 이용해서 바꾸라고 찾아보니 나와서 나중에 진행할 예정인데

특수문자들어가면 register_result.php 실행 명령어가 작동안하는건 찾아볼수가없네요....
시작123132
1년 전
if ($msg = empty_mb_id($mb_id)) alert($msg, "", true, true); // alert($msg, $url, $error, $post);
if ($msg = valid_mb_id($mb_id)) alert($msg, "", true, true);
if ($msg = count_mb_id($mb_id)) alert($msg, "", true, true);

// 이름, 닉네임에 utf-8 이외의 문자가 포함됐다면 오류
// 서버환경에 따라 정상적으로 체크되지 않을 수 있음.
$tmp_mb_name = iconv('UTF-8', 'UTF-8//IGNORE', $mb_name);
if($tmp_mb_name != $mb_name) {
alert('이름을 올바르게 입력해 주십시오.');
}
$tmp_mb_nick = iconv('UTF-8', 'UTF-8//IGNORE', $mb_nick);
if($tmp_mb_nick != $mb_nick) {
alert('닉네임을 올바르게 입력해 주십시오.');
}


이부분이 문제인것 같은데 한번 수정해보겠습니다
시작123132
1년 전
저부분도 닉네임이랑 이름에 사용되는 부분인거같네요....
그냥 순정 form_update인데 대체 뭐가 문제인지를 모르게씁니당......ㅠㅠㅠ
너를보았다
1년 전
소스 분석을 해드리고 코드 리뷰 해드리고 싶네요. 지금 소스를 볼 상황이 아니여서 일단 원하시는 니드는 register_form.php를 건너뛰고 바로 가입할 수 있는 폼이 나오면 되는 거죠?
시작123132
1년 전
a. 현재 가입할 수 있는 폼은 준비되어있습니다. (아이디=이메일 형식)
b. 아이디에 특수문자가 포함되면
if ($w == '') {
goto_url(G5_HTTP_BBS_URL.'/register_result.php');
}

해당 코드가 작동하지 않습니다. 별개로 가입은 쿼리에 정상적으로 등록됩니다.
(특수문자가 없을시에는 정상 작동)


그래서 특수문자가 들어가도 goto_url(G5_HTTP_BBS_URL.'/register_result.php'); 코드가 작동했으면 합니다 ㅠㅠ
너를보았다
1년 전
지금 클라이언트 소스 중 그누보드로 공급한 프로젝트가 있는데 확인해보고 답글 달아드리겠습니다.
시작123132
1년 전
너무 감사하고 죄송합니다..
너를보았다
1년 전
확인해보니 $w == '' 관련하여 곳곳에 검수하는 로직들이 있습니다.
그런데 단순히 register_form.php 를 생략하는 것이 문제가 될 것 같진 않습니다.

그래도 생략되면 안되는 소스가 register_form.php 내에 존재하네요.
set_session 이라든가 토큰값 유효성을 확인하는 REQUEST 라든가...
시작123132
1년 전
선생님 ㅠㅠㅠ 해결했습니다....
너를보았다
1년 전
고생하셨습니다. 저도 꼼꼼히 봐드리고 싶었지만 근무중에는 힘들어서요...그래도 해결되셨다니 다행입니다.
시작123132
1년 전
아 근데 이번에는 또 다른 오류가 생겼네요.,..
어쩔땐 결과 페이지로 이동하고
어쩔땐 이미 사용중인 회원이라고뜨고 (쿼리에 등록은됨)
어쩔땐 메인페이지로 돌아가고(쿼리에 등록은됨)

무슨 규칙으로 그렇게되는지 모르겠어서
다포기하고싶어지네여...
너를보았다
1년 전
음. 오류라기 보다는 분기 처리하는 단계에서 정보의 전달 또는 처리과정에서 진행하는 루틴인것인데...

1. 결과 페이지로 리다이렉션 -> 정상으로 회원가입이 완료된 상태
2. 이미 사용중인 회원 Alert(DB에 삽입) -> 아이디가 또는 기타 회원정보가 중복되는 부분이 있는지 확인이 필요(이 경우 유효성 검사를 추가하거나 회원가입 입력란에 입력한 정보를 서버에 삽입된 데이터들과 비교분석을 하여야 합니다.)
3. 메인페이지로 리다이렉션(DB에 삽입) -> 분기처리되는 로직을 확인(어떠한 처리 상태에서 메인페이지로 가는지 확인이 필요합니다.)

흠...개발하다가 영향도 파악이 안된 상태에서 개발할 경우 기존에 문제없던 부분이 이슈가 되는 경우가 종종있습니다. 공통(Commons) 부분을 수정한다던가 Head(그누보드 특성상 전범위 페이지에 Include) 부분을 수정한다던가...그럴 경우 영향도 확인을 안하고 하드코딩을 하게 되면 문제가 발생하게 됩니다...필히 개발전 영향도 파악이 필요해요.

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

위의 루틴을 보자면 중간 Step을 생략하고 입력된 값을 바로 register_form_update로 파라미터를 전달해 서버에 즉시 insert하는 로직으로 구성하신 것 같은데 그렇다면 register_form.php파일을 소스 분석하셔서 추가적으로 처리해야할 부분이 있어 보입니다.
아래의 항목을 확인해보세요.

 

** 체크해야할 항목

1. register_form.php 소스 내에 $_SESSION 또는 $_COOKIE, 프론트단에 setCookie,getCookie 등의 쿠키 또는 세션이 생생하도록 개발한 영역이 있는지.

2. register_form_update.php 내 insert 또는 update 시 데이터가 정상적으로 DB에 삽입/변경 되고 있는지.

3. register_form.php의 소스 내부에 영향을 받는 함수 또는 쿼리가 있는지.

 

위의 항목만 체크하셔도 무리없이 처리 가능할 것으로 보입니다. 소스를 제가 보질 못했기 때문에 뚜렷히 답변드리기는 어렵지만, 수정한 소스 내에 오류 리포트를 확인해보는 것이 좋을 것으로 보입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

시작123132
1년 전
폼 업데이트 php 부분에서
if ($w == '') {
goto_url(G5_HTTP_BBS_URL.'/register_result.php');

이게 결과 페이지로 이동시키는거 같은데

$w == ' ' << 이 결과가 충ㅇ족되어야
이벤트가 발생하는 것 같은데
w == ''가 되려면 어떻게 해야하는지 모르겠습니다..
시작123132
1년 전
......
너를보았다
1년 전
위의 경로에서 가입하기를 클릭하니 회원정보 값이 없다는 Alert이 발생합니다. 따라서, Alert 문구를 찾아서 해결해보셔야 할 것 같네요.
시작123132
1년 전
제가 너무 초심자라 alert는 어디서 확인할 수 있는지 알 수 있을까요,,

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

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

로그인