PHP 에서 SESSION 사용 중의 약간의 경험 총화

3678 단어 SESSION
SESSION 세 션 이 열 리 면 브 라 우 저 에 대한 유일한 표지 session 을 먼저 보 냅 니 다.id 의 쿠키(이름 은 PHPSESSID 로 sessionname()획득),session.savehandler=files 의 경우 서버 의 지정 디 렉 터 리(예:temp)에서 접미사 가 없 는 파일 을 생 성 합 니 다.이름 은
 
'sess_" + 'session_id';
입 니 다. 이렇게 해서 기본 적 인 설정 을 완성 했다.그러면 다음 http 요청 을 시작 할 때 먼저 브 라 우 저 는 현재 도 메 인 이름 에 있 는 모든 쿠키 이름과 값 을 보 냅 니 다.그러면 서버 는 쿠키 에 있 는 session 에 따라id 는 session 파일 을 읽 으 러 다 니 며 이 session 이 누구 에 속 하 는 지 헷 갈 리 지 않 습 니 다.이 단 계 는 구체 적 으로 다음 과 같 습 니 다.SESSION 은 브 라 우 저 에 대한 유일한 쿠키 변수 session 을 보 냅 니 다.id,이 sessionid 변 수 는 이름,값 이 있 습 니 다.변수 이름(name)은 기본적으로 PHPSESSID 이 고 변수 값(value)은 apache 에서 무 작위 로 생 성 된 문자열 입 니 다.rvag9m368vim7k8g4v7k2ank 70 과 유사 합 니 다.흔히 말 하 는 sessionid 는 이 유일한 문자열 rvag9m368vim7k8g4v7k2ank 70 을 말 합 니 다.구체 적 으로 FF 의 HTTP 응답 에서 다음 과 같 습 니 다:sessionstart(); 프로그램 에서 위의 한 마디 가 위의 기능 을 완 료 했 습 니 다.만약 브 라 우 저가 PHPSESSID 의 쿠키 를 보 내지 않 았 다 면 이 쿠키 를 읽 으 면 같은 세 션 을 유지 할 수 있 습 니 다.자,session 의 작업 원 리 를 알 았 으 니 서버 쪽 sessrvag9m368vim7k8g4v7k2ank 70 이 파일 을 수 동 으로 삭 제 했 습 니 다.그러면 session 이 효력 을 잃 습 니 다.브 라 우 저 쿠키 가 효력 을 잃 으 면 session 은 효력 을 잃 습 니 다.수 동 상태 에서:서버 쪽 에 서 는 session 을 사용 할 수 있 습 니 다.destroy()또는 sessionunset()를 무효 화 합 니 다.브 라 우 저 에서:바로?setcookie('PHPSESSID','',123); 쿠키 를 만 료 시 키 거나 다른 방식 으로 만 들 지만 즉시 효력 을 잃 을 수 없 습 니까?session_set_cookie_params($time);//현재 시간 스탬프 의 초,예 를 들 어 60 초 후 만 료,시간 스탬프+자신 이 설정 한 시간 을 사용 하지 마 십시오.위 에서 말 한 것 은 모두 session 을 기한 을 앞 당 기 는 것 이지 만,직접 session 을 지연 시 키 려 면 안 됩 니까?설정 수정 제외(session.gcmaxlifetime)안 돼 요.php.ini 에서 session.gcmaxlifetime 설정 만 료 시간,이 시간 이 되면 session.gcprobability /session.gc_divisor 의 확률 이 회수 되 었 습 니 다.이 시간 에 GC 프로 세 스 를 시작 하면 GC 는 session 파일 의 수정 시간(mtime)을 읽 고 현재 시간 보다 큰 것 을 발견 하면 session.gc 보다 큰 것 을 발견 합 니 다.maxlifetime,즉시 삭제 합 니 다.여기 서 우 리 는 이 세 션 을 어떻게 유지 하 는 지 알 게 되 었 습 니 다.session.gc 에 만 있 을 수 있 습 니 다.maxlifetime 에 서 는 사용자 가 방문 해 야 합 니 다.방문 할 때마다 session 을 수정 해 야 합 니 다.그러면 이 session 은 session.gc 가 더 많아 집 니 다.maxlifetime 의 생존 시간.그리고 session.cookielifetime,브 라 우 저의 생존 시간 을 설정 합 니 다.기본 값 은 0 입 니 다.IE 에서 저 는 정상 적 인 것 을 발 견 했 습 니 다.브 라 우 저 재 부팅 즉 쿠키 가 효력 을 잃 었 습 니 다.FF 아래 는 계속 존재 합 니 다.session.cookie 설정lifetime 는 sessionset_cookie_params, ?session_set_cookie_params(60);//60 s session_start(); session.gc_maxlifetime 과 session.cookielifetime 은 공동으로 session 의 생존 시간 을 결정 한다.방금 Firefox 쿠키 세 션 이 만 료 된 자 료 를 찾 았 는데,아래 와 같 습 니 다 This is apparently by design.Check out this Bugzilla bug:https://bugzilla.mozilla.org/show_bug.cgi?id=443354 Firefox has a feature where you close Firefox and it offers to save all your tabs, and then you restore the browser and those tabs come back. That's called session restore. What I didn't realize is that it'll also restore all the session cookies for those pages too! It treats it like you had never closed the browser. This makes sense in the sense that if your browser crashed you get right back to where you were, but is a little disconcerting for web devs used to session cookies getting cleared. I've got some old session cookies from months ago that were set by sites I always have open in tabs. To test this out, close all the tabs in your browser,then close the browser and restart it.I think the session cookies for your site should clear in that case.그렇지 않 으 면 you'd have to turn off session restore.이것 은 불 여우의 세 션 저장 기능 입 니 다.FF 디자인 이 그렇습니다.이 close all the tabs in your browser,then close the browser and restart it 테스트 를 통 해 저장 되 어 있 는 지 확인 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기