2010-06-03 2 views
0

사이트의 루트에있는 하위 사이트에서 테스트 해본 사이트가 있습니다. 테스트 중에는 로그인에 문제가 없었지만 새 사이트 파일을 하위 디렉토리에서 기본 사이트 루트로 옮겼습니다. 이제 보안 영역의 거의 모든 페이지가 새로 고쳐진 후 로그인 상태가 유지됩니다.관련 파일을 사이트 루트로 이동 한 후 세션 기반 로그인에 문제가 발생했습니다.

MySQL 데이터베이스에 저장된 비교 값을 사용하여 모든 페이지로드시 세션 ID를 새로 고치는 $ _session 기반 로그인 시스템을 실행 중입니다.

누구에게이 문제의 원인이 될 수있는 제안이 있습니까?

+0

DEBUUUUUUU! 먼저 디버그 한 다음에 만 묻고 ** 대답 **! –

답변

0

쿠키는 일반적으로 경로와 관련이 있습니다. 이전의 하위 디렉토리 기반 사이트는 아마도 해당 하위 디렉토리에 대해서만 쿠키 (브라우저를 사용자에게 바인드 함)를 설정했을 것입니다.

해결 방법은 이전 서브 디렉토리에 '/'에 쿠키를 추가 한 다음 리디렉션 페이지를 루트의 새 사이트로 리디렉션하는 것입니다.

+0

잘 모르겠습니다. 해당 서브 디렉토리는 최종 배치에 존재하지 않습니다. – YsoL8

+0

브라우저의 쿠키는 일반적으로 특정 경로에 대해 설정되므로 예를 들어/web-app-one 아래의 페이지는/web-app-two에서 쿠키를 읽을 수 없습니다. – krico

+0

session.cookie_path는 /에 phpinfo로 설정됩니다. 한 폴더에서 처리되는 모든 보안 작업 이후로는 당연한 것처럼 들립니다. – YsoL8

0

세션 ID를 변경하면 이전 세션에 저장된 모든 데이터가 손실됩니다. 세션 시작 명령마다 세션 이름을 설정해야합니다.

<?php 
session_name('AnySessName'); 
?> 

또는 다른 메커니즘을 사용하여 변수 세션을 교차 세션으로 설정해야합니다.

+0

죄송합니다. $ _session [ 'id']이라는 값을 의미합니다. 여전히 적용됩니까? – YsoL8

+0

확인. 을 쓸 수 있습니다. ' 페이지에 있습니다. 페이지를 새로 고침 한 후 변경 되나요? 브라우저가 아무것도 표시하지 않는 쿠키 – GOsha

+0

에 세션 식별자를 저장하고 있습니다! – YsoL8

1

krico는 쿠키 경로가 원인 일 수 있음을 제안했지만 (제안 된 솔루션이 약간은 어설픈 것 같지만) 그렇지 않다고 말한 적이 있습니다.

확인 확인합니다 정확히 어떤 쿠키 (이름, 경로, 만기가 플래그)가 설정 iehttpheaders (MSIE) LiveHeaders (파이어 폭스)를 사용하거나 Wireshark와 같은 네트워크 스니퍼를 사용하여 반환되고있다. 그런 다음 질문 내용을 다시 한 번 물어보십시오.

C.

+0

(http://stackoverflow.com/questions/2965878/intermitant-sessions) – YsoL8

관련 문제