register_form_update.php에서 에러가 발생했을때 뒤로 가기??? 채택완료
위 글에 팁을 올려주신 분과 같은 내용입니다.
회원가입의 순서 :
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을 하는게 맞는것 같은 데...
어떤 보안 상의 이유인지... 이런 코드가 들어 있더라구요.
</p>
<div style="color: #000000;background-color: #ffffff;font-family: Consolas, 'Courier New', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;">
<div><span style="color: #001080;">$url</span><span style="color: #000000;"> = </span><span style="color: #795e26;">clean_xss_tags</span><span style="color: #000000;">(</span><span style="color: #001080;">$url</span><span style="color: #000000;">, </span><span style="color: #098658;">1</span><span style="color: #000000;">);</span></div>
<div><span style="color: #af00db;">if</span><span style="color: #000000;"> (!</span><span style="color: #001080;">$url</span><span style="color: #000000;">) </span><span style="color: #001080;">$url</span><span style="color: #000000;"> = </span><span style="color: #795e26;">clean_xss_tags</span><span style="color: #000000;">(</span><span style="color: #001080;">$_SERVER</span><span style="color: #000000;">[</span><span style="color: #a31515;">'HTTP_REFERER'</span><span style="color: #000000;">], </span><span style="color: #098658;">1</span><span style="color: #000000;">);</span></div>
<div><span style="color: #001080;">$url</span><span style="color: #000000;"> = </span><span style="color: #795e26;">preg_replace</span><span style="color: #000000;">(</span><span style="color: #811f3f;">"/[\<\>\'</span><span style="color: #ee0000;">\"\\</span><span style="color: #811f3f;">\'</span><span style="color: #ee0000;">\\\"</span><span style="color: #811f3f;">\(\)]/"</span><span style="color: #000000;">, </span><span style="color: #a31515;">""</span><span style="color: #000000;">, </span><span style="color: #001080;">$url</span><span style="color: #000000;">);</span></div>
<div><span style="color: #001080;">$url</span><span style="color: #000000;"> = </span><span style="color: #795e26;">preg_replace</span><span style="color: #000000;">(</span><span style="color: #811f3f;">'/</span><span style="color: #ee0000;">\r\n</span><span style="color: #811f3f;">|</span><span style="color: #ee0000;">\r</span><span style="color: #811f3f;">|</span><span style="color: #ee0000;">\n</span><span style="color: #811f3f;">|[^\x20-\x7e]/'</span><span style="color: #000000;">,</span><span style="color: #a31515;">''</span><span style="color: #000000;">, </span><span style="color: #001080;">$url</span><span style="color: #000000;">);</span></div>
<div><span style="color: #008000;">// url 체크</span></div>
<div><span style="color: #795e26;">check_url_host</span><span style="color: #000000;">(</span><span style="color: #001080;">$url</span><span style="color: #000000;">, </span><span style="color: #001080;">$msg</span><span style="color: #000000;">);</span></div>
</div>
<p>
제 생각에는 저 코드때문에 $url이 없더라도 REFERER URL이 강제로 들어가는 것 같은데...
질문은 2개에요.
1. alert.php를 어떻게 수정해야 다른 소스들에 영향을 주지 않고
회원가입과 같은 로직에서 history.back()을 할 수 있을까요?
2. alert.php에 위 코드와 같은 로직이 추가된 이유가 너무 궁금합니다.
(사실 그 이유를 몰라서 섣불리 수정하기가 무섭거든요~)
잘 부탁 드립니다.
감사합니다.
답변 1개
답변에 대한 댓글 4개
걍 얼럿만 히스토리 백 하면... 안될까요? ㅠㅠ
해당 페이지내에 분기변수를 만들어서 분기시키거나,,
alert을 안띄우고 모달로 경고를 띄운 후 페이지 히스토리백을 시키거나,,
생각하면 방법이야 나오겠지만 쉬운방법과 어려운방법중
선택하셔야될것같네요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
2단계에서 agree값들을 세션에 넣어두고,
3단계에서 2단계로 돌아올때,
$_POST["agree"]를 체크하는 IF문 안에서
세션의 agree값을 한번 더 확인하면 1단계로 돌아가는것을 막을 수 있겠군요~
그런데...
한가지 아쉬운것은...
사용자가 입력했던 내용은 다 사라지는게 아쉽네요.
(브라우저별 특성에 따라 남아 있을 수 도 있는지 궁금하긴 하네요. 크롬은 안남더라구요.)