2012-01-01 2 views
3

브라우저가 닫힐 때 세션이 삭제되기 때문에 세션이 클라이언트 측에 저장되었다고 생각했습니다. 그러나 오늘은 이것이 사실이 아니며 세션이 서버에 저장되었다고 들었습니다.PHP는 세션 삭제시기를 어떻게 알 수 있습니까?

그래서 세션이 삭제되도록 브라우저가 닫힌 시점을 어떻게 알 수 있습니까?

답변

6

그렇지 않습니다. 두 가지 요인은 놀이에 있습니다

  • 클라이언트 측에 lifetime of the cookie; 이 쿠키는 세션 ID를 포함합니다. 은 세션 데이터 자체와 관련이 없습니다..

    이 세션의 수명과 아무 상관이이 설정을 설정 무엇이든

    , 그것은 시간을 변경하지 않습니다하기 :

    매뉴얼은 아마이 충분히 강조하지 않습니다 세션 가 서버에 있습니다. 이 서버에서 그들에게 를 다시로드 할 필요없이 사용자의 캐시에 캐시 된 페이지를 유지할 수있는 방법을 오랫동안 브라우저를 조언 HTTP 캐시 만료 시간 (Expires:Cache-Control: max-age 헤더)

    이 변경 내용 만.

  • 서버 측 세션 데이터의 수명. 세션은 클라이언트의 세션 ID가있는 조회를 통해 "활성화"됩니다. 수명은 session garbage collection settings discussed here을 통해 제어됩니다.

    주석 기 아마도 실제로 세션 데이터에 대한 이야기는 session.cache_expire 문서 페이지에 게시 :이다,

    대부분의 사람들도 모르는 무슨 대부분의 리눅스 배포판 (나이어야 데비안과 우분투) 글로벌 /etc/php5/php.ini ( 의 기본값은 24 분)에 설정된 값을 사용하여 세션 디렉터리를 정리하는 cronbjob이 있습니다.그러므로 스크립트에서 값을 더 크게 설정하더라도 cronbjob은 여전히 ​​글로벌 값을 사용하여 세션을 정리합니다. 당신이 그 상황에 실행하면

    , 당신은, /etc/php5/php.ini에서 글로벌 값을 더 높게 설정으로 cronjob 또는 더 나은을 해제 할 수 있습니다 비 시스템 전체 디렉토리 또는 데이터베이스에 자신의 세션 정리를 할. 당신이 볼 수 있듯이 및 세션 데이터 저장 추적 세션 사이의 구별을 할 때

    는 혼동하는 것은 지역 사회 사이에 풍부하다.

+0

좋은 답변입니다. 고맙습니다. 네가 신경 쓰면 질문 하나 더있어? 사용자는 어떤 방법 으로든 세션에 저장된 정보를 볼 수있는 액세스 권한이 있습니까? 미리 감사드립니다. –

+1

@MorSela : 한 번에 한 가지 질문 만하십시오. 그러나 _no_. –

+1

@MorSela : 아니요, 세션은 서버 전용입니다. 클라이언트는 서버가 말하는 모든 것을 가져옵니다. – Amadan

0

서버가 브라우저를 닫을 때 알 수있는 방법이 없습니다. 브라우저를 닫으면 세션 ID 쿠키가 클라이언트에서 삭제됩니다.

주어진 시간 내에 요청이 없으면 세션이 서버에서 삭제됩니다 (세션 시간 초과).

+0

whoy the downvote? 이 대답은 옳다. +1 –

+2

나는 downvote을하지는 않았지만, 다른 문서가 충돌 할 때, 몇 가지 문서를 인용하지 않고 @ SebastiánGrignoli 같은 주장을하는 것을 조심해야한다. –

+2

올바르지 않습니다. 세션은 프로그래밍 방식에 따라 브라우저 닫기 또는 타임 아웃시 * 만료 될 수 있습니다. * 삭제 *와 상관 관계가 없습니다. – Amadan

3

세션은 쿠키로 식별되며 브라우저에 저장됩니다. 만료 날짜/시간을 가질 수 있거나 브라우저가 닫힐 때 만료되도록 설정할 수 있습니다. 쿠키가 만료되면 더 이상 세션 저장소를 식별 할 수 없으며 세션이 만료됩니다. 시스템 관리자 나 프로그래머가 특별히 정리를하지 않으면 삭제되지 않습니다.

수정 그냥 PHP 태그에 주목했습니다. PHP가 세션 파일을 정리하는 방법은 this question을 확인하십시오.

+0

아하, 좋은 링크! 감사합니다 –

+0

답변과 링크에 감사드립니다! –

+0

설명을 위해 PHP 세션이 "브라우저가 닫힐 때 만료되도록 설정되어있는 경우"는 세션이 액세스 될 때마다 (세션 ID를 사용하여 클라이언트 브라우저에서) 지정된 시간 (분) 동안 만료 시간이 자동으로 연기된다는 것을 의미합니다. .브라우저가 닫히면 해당 시간대에 세션에 액세스 할 수 없으며 세션은 만료됩니다. 마지막 액세스에서 설정된 시간 (분)이 지나기 전에가 아니라 브라우저가 종료 된 후에도 세션이 만료됩니다. –

관련 문제