SESSION 세션이 열리면 브라우저의 session_id를 고유하게 식별하는 쿠키가 먼저 전송됩니다(이름은 PHPSESSID이며 session_name()을 통해 얻을 수 있음). session.save_handler = 파일과 동일한 경우 지정된 위치에 있습니다. 서버의 디렉터리(예: temp) 접미사 없이 파일을 생성합니다. 이름은
코드를 복사합니다. 코드는 다음과 같습니다.
'sess_" 'session_id';
이렇게 하면 기본 설정이 완료됩니다. 그런 다음 다음에 http 요청이 시작되면 브라우저는 먼저 현재 도메인 이름 아래의 모든 쿠키 이름과 값을 보내므로 서버는 쿠키의 session_id를 기반으로 세션 파일을 읽을 수 있습니다. 세션이 속해 있습니다.
이 단계는 다음과 같습니다.
SESSION은 고유한 쿠키 변수인 session_id를 브라우저에 보냅니다. 이 session_id 변수에는 이름과 값이 있습니다. 변수 이름(name)의 기본값은 PHPSESSID이고, 변수 값(value)은 rvag9m368vim7k8g4v7k2ank70과 비슷하게 apach에서 무작위로 생성한 문자열입니다. session_id는 일반적으로 이 고유 문자열 rvag9m368vim7k8g4v7k2ank70을 나타냅니다.
구체적으로 이는 FF의 HTTP 응답 헤더 아래에 있습니다.
session_start()
브라우저가 PHPSESSID를 보내지 않는 경우 프로그램의 위 문장은 위 기능을 완료합니다. 쿠키 접속하시면 과거로 하나 보내주시고, 쿠키가 있으면 이 쿠키를 읽어서 동일한 세션을 유지할 수 있도록 해주세요.
이제 세션이 어떻게 작동하는지 알았으므로 서버 측에서 sess_rvag9m368vim7k8g4v7k2ank70 파일을 수동으로 삭제하면 세션이 유효하지 않을 것이라고 추론할 수 있습니다. 브라우저 쿠키가 유효하지 않으면 세션은 여전히 유효합니다. 유효하지 않은.
수동의 경우:
서버측에서는
session_destroy() 또는 session_unset()
을 사용하여 무효화할 수 있습니다.
브라우저 측:
직접
?setcookie('PHPSESSID','',123)
쿠키가 만료되도록 하거나 다른 방법으로 설정할 수 있지만 즉시 만료될 수는 없습니다.
? session_set_cookie_params($time);//현재 타임스탬프의 초(예: 60초).
타임스탬프에 직접 설정한 시간을 사용하지 마세요. 위에서 언급한 내용은 모두 세션을 조기에 만료시키는 것에 관한 것이지만 세션을 직접 지연시키는 것이 가능합니까? 구성(session.gc_maxlifetime)을 수정하는 것 외에도 php.ini의 session.gc_maxlifetime에 만료 시간이 설정되어 있습니다. 이때 session.gc_probability /session.gc_divisor가 재활용될 가능성이 있습니다. 이 시간에 도달하여 GC 프로세스가 시작되면 GC는 세션 파일의 수정 시간(mtime)을 읽고 현재 시간을 뺀 후 session.gc_maxlifetime보다 큰 것을 찾아 즉시 삭제합니다. 이 시점에서 우리는 이 세션을 유지하는 방법을 이해합니다. session.gc_maxlifetime은 사용자가 액세스할 때마다 세션을 수정해야 합니다. 이렇게 하면 세션이 더 오래 유지됩니다. session.gc_maxlifetime보다.
브라우저에서 PHPSESSID의 생존 시간을 설정하는 session.cookie_lifetime에 대해서도 이야기해 보세요. 기본값은 0입니다. IE에서는 쿠키가 계속해서 다시 시작되면 무효화됩니다. FF 아래. session_set_cookie_params를 사용하여 session.cookie_lifetime을 설정할 수 있습니다.
?session_set_cookie_params(60);//60 s session_start();
session.gc_maxlifetime과 session.cookie_lifetime이 함께 세션의 수명을 결정합니다.
---------------------------------- -- ----------------
방금 Firefox 쿠키 세션 만료에 대한 정보를 검색한 결과 다음과 같은 내용을 발견했습니다.
이것은 분명히 의도적으로 설계된 버그입니다. https://bugzilla .mozilla.org/show_bug.cgi?id=443354
Firefox에는 Firefox를 닫고 모든 탭을 저장한 다음 브라우저를 복원하면 해당 탭이 다시 나타나는 기능이 있습니다. 세션 복원이라고 합니다. 이 기능은 해당 페이지에 대한 모든 세션 쿠키도 복원한다는 점입니다.
이는 브라우저를 닫은 적이 없다는 의미입니다. 충돌이 발생하면 원래 있던 위치로 바로 돌아갈 수 있지만 세션 쿠키가 지워지는 데 익숙한 웹 개발자에게는 약간 당황스럽습니다. 몇 달 전에 항상 탭에 열려 있는 사이트에서 설정한 오래된 세션 쿠키가 있습니다.
이를 테스트하려면 브라우저에서 모든 탭을 닫은 다음 브라우저를 닫고 다시 시작하세요. 그렇지 않으면 세션 복원을 꺼야 합니다.
이것은 Firefox 세션 저장 기능이며, FF 디자인은 이렇습니다. 브라우저의 모든 탭을 닫은 다음 브라우저를 닫고 다시 시작하여 여전히 저장되어 있는지 확인하여 이 테스트를 수행할 수 있습니다.
이상에는 영어 교육 경험 요약을 포함하여 영어 교육 경험 요약과 PHP에서 SESSION을 사용한 경험 요약이 소개되어 있습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.