문제
브라우저의 Back, Forward 버튼을 누를 때 로그인, 글 작성등을 처리하는 중간 페이지에 걸려서
예를들어,
A(로그인 페이지) -> B(로그인 처리 페이지) -> C(정상처리 후 이동 URL), D(오류 처리 후 이동 URL)
방식으로 처리한다면 B는 둘 중 하나입니다.
혹은 Location header로 C나 D로 보낸다면 alert('로그인 실패'); 등의 메시지를 출력할 수 없게 됩니다.
해결
먼저 페이지 이동 시키는 방법은
위에서 말씀 드렸듯이
1번 방법은 처리 결과 메시지를 출력하지 못합니다. (Back 버튼 문제는 없음)
3,4,5번 방법은 Back 버튼을 누르면 다시 C나 D로 되돌아 오는 문제가 반복됩니다.
2번 방법으로 처리하면 Location Header와 메시지 출력을 동시에 할 수 있습니다.
(먼저 메시지가 출력되고 확인을 누르면 페이지로 이동)
※ 자료출처 : http://www.phpschool.com
브라우저의 Back, Forward 버튼을 누를 때 로그인, 글 작성등을 처리하는 중간 페이지에 걸려서
- 만료된 페이지라는 메시지가 출력되는 경우
- 처리 결과에 따라 오류 페이지로 계속 되돌아 오는 경우
예를들어,
A(로그인 페이지) -> B(로그인 처리 페이지) -> C(정상처리 후 이동 URL), D(오류 처리 후 이동 URL)
방식으로 처리한다면 B는 둘 중 하나입니다.
- 정상이면 (메시지 출력 후) C로 이동 오류이면 (오류메시지 출력 후) D로 이동 방식
- 정상이면 C로 이동 오류이면 D로 이동 (D = 오류메시지를 포함한 A와 동일/유사 페이지) 방식
혹은 Location header로 C나 D로 보낸다면 alert('로그인 실패'); 등의 메시지를 출력할 수 없게 됩니다.
해결
먼저 페이지 이동 시키는 방법은
- HTTP Header > header("Location: url"); < PHP Function
- HTTP Header > header("Refresh: 0; URL=url"); < PHP Function
- JavaScript > window.location.href = url;
- JavaScript > window.location.replace(url);
- Meta Tag > <meta http-equiv="Refresh" content="0; URL=url">
위에서 말씀 드렸듯이
1번 방법은 처리 결과 메시지를 출력하지 못합니다. (Back 버튼 문제는 없음)
3,4,5번 방법은 Back 버튼을 누르면 다시 C나 D로 되돌아 오는 문제가 반복됩니다.
2번 방법으로 처리하면 Location Header와 메시지 출력을 동시에 할 수 있습니다.
(먼저 메시지가 출력되고 확인을 누르면 페이지로 이동)
※ 자료출처 : http://www.phpschool.com
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,