register_form_update.php에서 에러가 발생했을때 뒤로 가기???

register_form_update.php에서 에러가 발생했을때 뒤로 가기???

QA

register_form_update.php에서 에러가 발생했을때 뒤로 가기???

답변 1

본문

https://sir.kr/g5_tip/8928

위 글에 팁을 올려주신 분과 같은 내용입니다.

 

회원가입의 순서 :

  1. register.php : 동의를 받죠.

  2. register_form.php : 회원에게 여러 정보를 입력받습니다.

  3. register_form_update.php : 회원에게 받은 정보를 검증하고 DB에 저장합니다.

 

회원가입 마지막 단계 즉 3단계에서 에러가 발생하여 얼럿창의 확인을 누르면

2단계로 가야 하는데, agree값이 없어서 "동의 안했으니 다시 1단계로 가라~"라는 얼럿이 뜨고

1단계로 돌아가버립니다...

 

사실 제일 좋은 방안은 (제 생각에...)

history.back이 수행되어 2단계에서 입력했던 내용이 그대로 있는 상태로 가면 좋겠는데...

걍 1단계로 가버리니...

사용자 입장에선 얼마나 짜증이 날까요?

 

대충 분석해보니...

URL이 없으면 histroy.back을 하는게 맞는것 같은 데...

어떤 보안 상의 이유인지... 이런 코드가 들어 있더라구요.



$url = clean_xss_tags($url, 1);
if (!$url) $url = clean_xss_tags($_SERVER['HTTP_REFERER'], 1);
 

$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
$url = preg_replace('/\r\n|\r|\n|[^\x20-\x7e]/','', $url);
 

// url 체크
check_url_host($url, $msg);

제 생각에는 저 코드때문에 $url이 없더라도 REFERER URL이 강제로 들어가는 것 같은데...

 

질문은 2개에요.

1. alert.php를 어떻게 수정해야 다른 소스들에 영향을 주지 않고

  회원가입과 같은 로직에서 history.back()을 할 수 있을까요?

2. alert.php에 위 코드와 같은 로직이 추가된 이유가 너무 궁금합니다.

   (사실 그 이유를 몰라서 섣불리 수정하기가 무섭거든요~)

 

잘 부탁 드립니다.

감사합니다.

  

이 질문에 댓글 쓰기 :

답변 1

agree값을 세션에 넣어서 떤지면 페이지가 이동해도 유지되지않을까요?

3단계회원가입일때 제가 사용했던 방식인데

오.. 굿 아이디어십니다~
2단계에서 agree값들을 세션에 넣어두고,
3단계에서 2단계로 돌아올때,
$_POST["agree"]를 체크하는 IF문 안에서
세션의 agree값을 한번 더 확인하면 1단계로 돌아가는것을 막을 수 있겠군요~

그런데...
한가지 아쉬운것은...
사용자가 입력했던 내용은 다 사라지는게 아쉽네요.
(브라우저별 특성에 따라 남아 있을 수 도 있는지 궁금하긴 하네요. 크롬은 안남더라구요.)

alert을 띄우면 강제로 alert.php를 타기때문에
해당 페이지내에 분기변수를 만들어서 분기시키거나,,
alert을 안띄우고 모달로 경고를 띄운 후 페이지 히스토리백을 시키거나,,
생각하면 방법이야 나오겠지만 쉬운방법과 어려운방법중
선택하셔야될것같네요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 674
© SIRSOFT
현재 페이지 제일 처음으로