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을 하는게 맞는것 같은 데...
어떤 보안 상의 이유인지... 이런 코드가 들어 있더라구요.
$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개 / 댓글 4개
agree값을 세션에 넣어서 떤지면 페이지가 이동해도 유지되지않을까요?
3단계회원가입일때 제가 사용했던 방식인데
답변에 대한 댓글 4개
해당 페이지내에 분기변수를 만들어서 분기시키거나,,
alert을 안띄우고 모달로 경고를 띄운 후 페이지 히스토리백을 시키거나,,
생각하면 방법이야 나오겠지만 쉬운방법과 어려운방법중
선택하셔야될것같네요
답변을 작성하려면 로그인이 필요합니다.
2단계에서 agree값들을 세션에 넣어두고,
3단계에서 2단계로 돌아올때,
$_POST["agree"]를 체크하는 IF문 안에서
세션의 agree값을 한번 더 확인하면 1단계로 돌아가는것을 막을 수 있겠군요~
그런데...
한가지 아쉬운것은...
사용자가 입력했던 내용은 다 사라지는게 아쉽네요.
(브라우저별 특성에 따라 남아 있을 수 도 있는지 궁금하긴 하네요. 크롬은 안남더라구요.)