2012-12-16 4 views
0
저장

가능한 중복 :
Firefox session cookies파이어 폭스가 자동으로 세션

내가 가진이 코드

session_start(); 

$_SESSION['login'] = "bla"; 

var_dump($_SESSION); 

나는 파이어 폭스에서이 페이지를 실행하면, 그때부터이 라인 $_SESSION['login'] = "bla"; 삭제 스크립트를 닫은 후 브라우저를 다시 열고 파이어 폭스가 나를 보여줍니다 : ["login"]=> string(3) "bla"

즉, Firefox는 브라우저가 닫힌 후에 세션 데이터를 저장합니다. 왜 이런 일이 일어나는가?

P. 이것은 파이어 폭스에서만 발생하며 다른 브라우저는 예상대로 작동합니다. 결과는 빈 배열입니다.

+0

이것은 파이어 폭스 설정입니다. http://support.mozilla.org/en-US/kb/restore-previous-session –

답변

0

정확한 버전의 스크립트를 테스트 하시겠습니까? 테스트 스크립트에 다른 것을 추가하여 예를 들어 에코과 같은 현재 시간을 추가 할 수 있습니다.

여기에있는 상황 중 하나는 브라우저의 모든 인스턴스가 동일한 쿠키 항아리를 공유한다는 것입니다. 브라우저가 세션 쿠키를 강제로 제거하도록하려면 모두 창과 탭을 닫아야합니다. 이것은 "실생활"에서 결코 문제가되지 않지만, 로그 아웃을 할 수 없을 때 개발자 견과를 몰아냅니다!

0

Firefox가 $ _SESSION을 (를) 저장할 수 없습니다. $ _SESSION은 전적으로 서버 측 변수입니다. 파이어 폭스에서는 서버에서 올바른 사용자 세션을 찾기 위해 PHP에서만 사용되는 세션 쿠키를 설정한다는 점만 제외하면 오지 않습니다.

["login"]=> string(3) "bla"을 얻은 이유는 첫 번째 실행에서 설정했기 때문입니다. 이 작업을 수행합니다 :

먼저 그런 다음 스크립트의 $_SESSION['login'] = "bla"; 줄을 삭제하고 실행 스크립트

session_start(); 

$_SESSION['login'] = "bla"; 

var_dump($_SESSION); 

를 실행합니다. 세션 변수에 로그인 키가 설정되어 있어야합니다.

session_start(); 

$_SESSION['login'] = null; 
// OR 
// unset($_SESSION['login']); 

var_dump($_SESSION); 

그런 다음 세션 변수의 값과 '로그인'키의 값 사라질 것를 참조하려고 그런 다음 별도의 스크립트를 실행합니다.

내가 말하고자하는 것은 세션에서 어떤 것을 설정하면 지속성이 유지되고 스크립트를 실행할 때마다 설정할 필요가 없다는 것입니다. 세션 변수에서 값을 제거하려면 명시 적으로 제거해야합니다.

관련 문제