2012-05-09 8 views
0

나는 PHP 프로젝트 작업 중이다. 브라우저를 닫을 때 세션을 설정 해제하거나 없애고 싶습니다.mac os에서 브라우저를 종료 할 때 세션을 파괴하는 방법은 무엇입니까?

여기서 I는

시도

는 ini_set ('session.cookie_lifetime', 0) session_set_cookie_params (0)으로 session_start 전에();

Windows OS에서는 정상적으로 작동하지만 MAC OS에서는 정상적으로 작동하지 않습니다.

미리 감사드립니다.

+0

어떤 브라우저를 사용하고 있습니까? –

+0

크롬 및 파이어 폭 – nic

+0

** 또한 ** 해당 코드를 사용해 보았습니다. 그 전에 무엇을 시도 했습니까? 기술적으로 무엇을하려는 것입니까? 어떤 쿠키 사양의 기능을 사용 하시겠습니까? 쿠키 사양이 있다는 것을 알고 계십니까? – hakre

답변

4

세션에는 두 부분이 있습니다. 서버

  • 클라이언트
  • 브라우저를 닫을 때 서버에서 데이터를 삭제 할 신뢰할 수있는 방법은 없습니다에 세션 ID를 쿠키에 저장

    1. 데이터입니다. 모든 제너 세션 시스템은 주기적으로 이전 데이터를 정리합니다 (N 분 동안 연결된 브라우저의 표시가없는 경우).

      일반적으로 브라우저의 쿠키는 만료 시간없이 보내 지므로 브라우저가 종료 될 때 만료됩니다. 이것은 안정적으로 작동합니다.

      Windows 클라이언트에서 원하는 것을 수행하고 있다면 무엇보다도 쿠키 만료에 대한 정보가 있다고 가정합니다.

      이것은 Mac과 Windows에서 발생합니다. 최선의 추측은 테스트에 문제가 있다는 것입니다. Windows에서 응용 프로그램은 일반적으로 마지막 창을 닫으면 종료됩니다. Mac의 경우 응용 프로그램에서는 일반적으로 명시 적으로 종료해야하지만 마지막 창을 닫으면 열려있는 상태로 유지해야합니다.

      쿠키가 만료되었는지 확인하려면 브라우저에서 종료해야합니다 (메뉴에서 종료를 선택하거나 마우스 오른쪽 버튼을 클릭하고 Dock의 아이콘을 클릭하여 종료).

      서버가 마지막 창을 닫았을 때이를 감지하고 세션을 원격으로 종료 할 수있는 방법은 없습니다.

    1

    하면 더 많거나 적은이 작동 즉, 윈도우

    에서 잘 작동합니다.

    하지만 이것은 아마 오해 맥 OS

    에서 작동하지. 모두 브라우저를 사용하여 세션 쿠키를 삭제하는 브라우저 창을 닫아야합니다. 대부분의 경우 하나의 창만 닫았으며 적어도 하나의 브라우저 인스턴스가 여전히 존재합니다 (터미널 창에서 top로 확인할 수 있습니다).

    관련 문제