메뉴 건너뛰기

프로그램언어

조회 수 18568 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

브로우저의 Back, Forward 버튼을 누를 때
로그인, 글 작성등을 처리하는 중간 페이지에 걸려서
1. 만료된 페이지라는 메시지가 출력되거나
2. 처리 결과에 따라 오류 페이지로 계속 되돌아 오는 경우를
만들어 보셨을거라 생각됩니다.

예를들어
A(로그인 입력 페이지) -> B(로그인 처리 페이지)
-> C(정상처리 후 이동 URL), D(오류 처리후 이동 URL)
방식으로 처리한다면
B는
1. 정상이면 (메시지 출력 후) C로 이동 오류이면 (오류메시지 출력 후)  D로 이동
방식이거나
2. 정상이면 C로 이동 오류이면 D로 이동 (D = 오류메시지를 포함한 A와 동일/유사 페이지)
방식일겁니다.

메시지를 출력하기 위해 JavaScript의 alert를 사용했다면
C나 D 페이지에서는 브로우저의 Back버튼을 누르면
B로 이동했다가 C나 D로 되돌아가는 문제가 반복됩니다.

혹은 Location header로 C나 D로 보낸다면
alert('로그인 실패'); 등의 메시지를 출력할 수 없게 됩니다.

이런 문제를 해결하기 위한 방법을 제시합니다.

먼저 페이지 이동 시키는 방법은
1. HTTP Header > header("Location: url"); < PHP Function
2. HTTP Header > header("Refresh: 0; URL=url"); < PHP Function
3. JavaScript > window.location.href = url;
4. JavaScript > window.location.replace(url);
5. Meta Tag > <meta http-equiv="Refresh" content="0; URL=url">
등입니다.

위에서 말씀 드렸듯이
1번 방법은 처리 결과 메시지를 출력하지 못합니다. (Back 버튼 문제는 없음)
3,4,5번 방법은 Back 버튼을 누르면 다시 C나 D로 되돌아 오는 문제가 반복됩니다.

2번 방법으로 처리하면
Location Header와
메시지 출력을 동시에 할 수 있습니다.
(먼저 메시지가 출력되고 확인을 누르면 페이지로 이동)

아래 함수는 제가 사용하고 있는 것에
이런 이슈를 반영하여 수정한 것 입니다.

사용방법
Error(Message, Url, Url2);
Message : Alert할 문자열 (줄 구분은 <br>)
Url : 현재 페이지의 이동 주소 혹은 팝업창일 경우 'self.close':닫기, 'history.back':이전페이지
Url2 : 부모창의 이동 주소

-------------------------------------------------------------------------------------------
    function error($message="", $url="", $url2="")
    {
        if(!$message && !$url)
            return;

        $message=eregi_replace("<br>|<br/>|<br />","\n",$message);
        $message=str_replace(""","\"",$message);
        if($url=="self.close")
        {
            echo "<script language="JavaScript">n";
            if($message)
            {
                echo "alert('{$message}');n";
            }
            echo "self.close();n";
            if($url2)
            {
                echo "opener.location.href = "{$url2}";n";
            }
            echo "</script>n";
        }
        else if($url=="history.back")
        {
            echo "<script language="JavaScript">n";
            if($message)
            {
                echo "alert('{$message}');n";
            }
            echo "history.back();n";
            if($url2)
            {
                echo "opener.location.href = "{$url2}";n";
            }
            echo "</script>n";
        }
        else
        {
            if(!$sented = headers_sent())
                header("Refresh: 0; URL={$url}");
            if($message)
            {
                echo "<script language="JavaScript">n";
                echo "alert('{$message}');n";
                if($sented)
                    echo "window.location.href="{$url}";n";
                echo "</script>n";
            }
        }
    }

간단하게 Function이나 올릴까 해서 시작했는데
장문이 됐네요.


  1. No Image 28Sep
    by
    2018/09/28 Views 5288 

    이미지 땡겨와서 출력하기

  2. No Image 27Feb
    by
    2014/02/27 Views 21422 

    유용한 함수 모음

  3. No Image 26Mar
    by
    2014/03/26 Views 19805 

    웹페이지 프린트 하기 html 수준

  4. No Image 12Jan
    by
    2023/01/12 Views 226 

    웹페이지 파싱

  5. No Image 26Mar
    by
    2014/03/26 Views 20356 

    웹에서 Excel 로 출력하기

  6. No Image 24Jul
    by
    2018/07/24 Views 4543 

    웹서버조회 소스

  7. No Image 06Mar
    by 조쉬
    2017/03/06 Views 18568 

    오류 메시지 출력(alert) 및 페이지 이동(refresh) 관련

  8. No Image 08Jan
    by
    2019/01/08 Views 1323 

    오늘 날짜 구하기

  9. No Image 27Feb
    by
    2014/02/27 Views 19535 

    엔터의 표현

  10. No Image 06Mar
    by
    2017/03/06 Views 17474 

    엑셀(*.xls) 화일을 PHP에서 읽기

  11. No Image 26Mar
    by
    2014/03/26 Views 17716 

    어떤 스마트폰으로 접속했는지 알아내는 소스 , (안드로이드 아이폰 )

  12. No Image 16Jan
    by
    2019/01/16 Views 1316 

    애니메이션 gif 와 일반 gif 구분 하기

  13. No Image 26Mar
    by
    2021/03/26 Views 583 

    알파벳 순서대로 출력하기 ord(), chr()

  14. No Image 23Dec
    by
    2016/12/23 Views 17328 

    시간관련함수

  15. No Image 07Mar
    by
    2017/03/07 Views 19102 

    세션 시작 / 세션 데이터 추가 / 세션 데이터 삭제 / 세션 종료하기

  16. No Image 26Mar
    by
    2021/03/26 Views 585 

    서브도메인 세션 공유

  17. No Image 16Jan
    by
    2019/01/16 Views 1373 

    생성된 파일생성날짜 업데이트 만들기 / filemtime

  18. No Image 08Jan
    by
    2019/01/08 Views 1453 

    새창열 때 HTTP_REFERER 값넘기는 꽁수

  19. No Image 26Mar
    by
    2021/03/26 Views 236 

    상수, 마법상수, 모든 상수 보기

  20. No Image 25May
    by
    2020/05/25 Views 774 

    사진이 회전되서 올라갈 경우

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved