2013-04-05 2 views
0

흐름을 가진 두 개의 서로 다른 브라우저 탭 열립니다 : 사용자가 다음 $_GET['ref']가 동일한 URL로 설정됩니다 열려있는 여러 개의 탭이있는 경우 aboe 흐름, 최초의 브라우저 탭 완벽한 작동 같은 리퍼러 URL은 다른 URL PHP

- user visits a page say www.mysite.com/somepage/1 
- user clicks on Log Out button or times out and logs out 
    *user log out detected redirect to home page but save the referer URL 
    *redirect to /login?ref=$_SERVER['HTTP_REFERER'] (actual code test if its set) 
- user sees login page and relogs back 
- user is redirected back to refere url that is saved in $_GET['ref'] 

첫 번째 탭에 대해 설정됩니다.

예 :

Tab 1 : /somepage/hello/world 
    Tab 2: /another/page/1 
사용자가 탭에서 로그 아웃 할 때

1 리디렉션됩니다에 : 예를 들어

/login?ref=http://site.com/somepage/hello/world (CORRECT)

사용자가 탭 2을에 페이지를 새로 고침하는 경우 리디렉션 됨 :

/login?ref=http://site.com/somepage/hello/world 
    NOT CORRECT, IT SHOULD REDIRECT TO: 
/login?ref=http://site.com/another/page/1 
+0

실제로 가능하지 않습니다. 사용자가 사이트에서 여러 개의 창/탭을 열었거나 이벤트가 발생한 특정 창에 대해 신뢰할 수있는 방법으로 검색 할 수 없습니다. –

+0

나중에 HTTP_REFERER 만 받기 위해 방향을 바꾸는 것처럼 보입니다. 그것은 꽤 간접적입니다. 리디렉션하기 전에 실제 URL *을 저장하고 리디렉션에 매개 변수로 추가하여 이미 리디렉션 한 것입니다. – hakre

답변

2

아무데도 리디렉션하지 마십시오. 사용자가 이미있는 동일한 URL에서 다시 로그인 프로세스를 처리하십시오. 이렇게하면 모든 탭과 브라우저 창의 URL이 그대로 유지됩니다.

+0

리디렉션 할 수도 있지만 리디렉션은 이미 매개 변수 형태로 URL을 유지해야합니다. 리다이렉트만으로 답안에서 제안한 것과 실질적으로 동일합니다.) – hakre

+0

오른쪽. 이 트릭은 세션의 원본 URL을 URL에 보관하는 것이 아닙니다. 그럼에도 불구하고 너무 많은 리디렉션을 권장하지는 않습니다. – Sven

+0

정확히 무엇을 할 것인가는 내게 달려 있지만 리디렉션으로 해결하려면 방법이 필요합니다. – GGio