2011-03-23 3 views
2

header() 리디렉션의 대상에서 리디렉션을 시작한 페이지를 결정할 수있는 방법을 찾아야합니다. 우리는 mod_auth_cas 해킹을 사용하여 로그인을 확인합니다. 우리는 mod_auth_cas 뒤에 전체 사이트를 가질 수 없기 때문에 .htaccess에 AuthType Cas가있는 하위 디렉토리가 있습니다. 로그인에 대해/cas 디렉토리에 대한 링크를 제공하고, cas가 처리되며, 반환 된 사용자 ID가 $ _SESSION에 추가되고 권한 데이터베이스와 비교되면 페이지가 헤더가 홈페이지로 리디렉션됩니다.헤더 리디렉션의 출처를 확인하는 방법

이 댄스는 단지 홈페이지로 돌아갈 때 잘 작동하지만, $ _SESSION에 사용자 ID가 없을 때 로그인을 요구하는 페이지를 cas로 리디렉션하려고합니다. 사용자가 로그인하고 사용자 ID를 다시 얻으면 홈페이지가 아닌 페이지를 보낸 페이지로 리디렉션됩니다. 헤더 리디렉션의 원래 페이지를 되돌아 볼 수있는이 기능은 사이트의 다른 부분에서도 유용 할 것입니다.

/cas/index.php는 리디렉션이 발생한 페이지를 어떻게 결정할 수 있습니까? 사용자가 여러 페이지를 열었을 때 충돌을 피하려면 어떻게 하나의 캐스로 리다이렉트되고, 캐스케이드로 리다이렉트되는 두 번째 페이지로 이동하고, 캐스케이드가 첫 번째 페이지로 돌아가서 완료합니다 다시 첫 번째 페이지가 아닌 두 번째 페이지로 리디렉션됩니까? 그리고이 솔루션은 순수 PHP, 자바 스크립트 추적이 아니어야합니다.

+0

원래 URL을 세션에 저장하지 않는 이유는 무엇입니까? – edmz

답변

2

이렇게 할 수있는 몇 가지 방법이 있습니다.

로그인 페이지 -On 리디렉션

이전 세션에서 원래의 URL에서, $ _SERVER 변수에서 참조 URL을 잡고 그래서 당신의 리디렉션 -Adjust 로그인

후 그 리디렉션

-Either 저장 로그인 페이지의 get/post 변수에 현재 URL을 추가합니다. - noaccess.php가 login.php로 리디렉션됩니다. ret_url = noaccess.php (전체 URL을 사용하고 URL을 인코딩하려고합니다.)

0

코드를 수정하거나 추가하지 않고 XDebug PHP 확장 프로그램을 설치하고 프로파일 링. 호출 스택에 대한 정보가 들어있는 캐시 그 린드 파일이 나옵니다. kcachegrind와 같은 것으로 열어서 header()에 대한 호출이 언제 발생했는지 시각적으로 나타낼 수 있습니다.

관련 문제