2016-06-29 3 views
1

모든 페이지에 포함 된 단일 구성 파일로 사용자 세션을 제어합니다. 내 웹 사이트에 로그인/로그 아웃 옵션이 있습니다.PHP 세션이 정확한 120 초에 자동으로 만료됩니다.

사용자의 세션 파괴 제한 시간을 1 년으로 늘리고 싶습니다 (사용자가 브라우저를 닫을 때도 사용자 로그가 페이지 밖으로 나가지 않으면 세션이 남아 있어야합니다). 나는 사용자 세션 시간 초과 값을 확장하려면이 옵션을 사용하고

,

<?php 

session_set_cookie_params(31556952); 

ini_set('session.gc_maxlifetime',31556952); 

session_start(); 

//my Other code like DB connections will come below. 

?> 

과의

php.ini라고 내가 31556952

session.gc_maxlifetime를 설정 한

그러나이 영향을주지 않는다 무엇이든, 사용자 세션은 정확하게 120 초에 파괴됩니다.

나는 stackoverflow 관련 질문을 모두 언급했지만 아무런 단서도 얻지 못했습니다.

무엇이 문제입니까? 어떤 제안.

+0

http://stackoverflow.com/questions/6360093/how-to-set-lifetime-of-session/6360403#6360403 도움이 될 것입니다. – Dave

+0

@DhavalDave 해결되지 않았습니다. –

답변

-2

같은 시간 동안 쿠키와 함께 세션 시간을 설정해야합니다.

+0

구문이나 코드로 간략히 설명해 주시겠습니까? –

0

몇 가지 생각할 수 있지만 여러 가지로 인해 발생할 수 있습니다. ini 파일의 유효성을 검사하여 모든 것이 올바른지 확인하십시오. 이전에 이런 문제가 있었는데 서버에 PHP 2 버전이 설치되어있었습니다. 나는 잘못된 ini 파일을 수정하고 있었다. 사용중인 php 버전이 현재 작업중인 ini에 속한 버전인지 확인하십시오.

때로는 PHP 파일에서 ini 세트를 수행하면 나에게 도움이되지 않습니다. 이유를 이해하지 못했습니다. 이 경우 htaccess 파일에 레코드를 추가하여 아파치가 파일을 선택하는지 확인하십시오. session timeout in php code and in htaccess?

마지막으로 찾는 것이 조금 더 까다 롭습니다. 어딘가에서 세션을 파괴하지 않도록 100 % 확인하십시오. 120 초가 지나면 서버처럼 보이지만 120 초 후에 아약스가있는 스크립트를 호출하지 않고 어떤 이유로이 스크립트가 세션을 종료시키고 있는지 확인하십시오. 다른 스크립트 어딘가에 session.gc_maxlifetime에 다른 값을 가지고 있으며, 두 스크립트가 세션 데이터에 대해 동일한 저장 공간을 공유하는 경우

+0

나는 이해한다, 그러나 나는 각 120 초를위한 회의를 파괴하기 위하여 어떤 원본도 부르지 않았다. –

+0

의도적으로 아니지만 버그 일 수 있습니다. 120은 기본 세션 시간이 매우 짧습니다. 혹시 독자적으로 별도의 PHP 스크립트를 만들고이 스크립트로 세션이 얼마나 오래 지속되는지 확인해 보셨습니까? 또한 120 초가 지나면 서버가 비난받을 것이고 응용 프로그램이 아닌 것을 알 수 있습니다. –

+0

흠, ini_get ('session.gc_maxlifetime') 이것은 정확한 값 31556952를 서버에 설정했기 때문에 –

0

가 당신에게 장난 할 수있는 몇 가지가 있습니다

  1. , 다음 낮은 값이 우선합니다 . 이것이 상황이라면 맞춤 설정 위치에 세션을 저장하여 수명이 더 짧아지는 스크립트가 더 이상이 스크립트와 충돌하지 않도록해야합니다. ini_set('session.savepath',NEWPATH)으로 전화하면됩니다. 자세한 내용은 see the docs입니다.
  2. 특정 데비안 시스템에서 런타임시 session.gc_maxlifetime 설정은 아무 효과가 없습니다. 최선의 방법은 파일을 php.ini로 변경하는 것입니다. 이것은 reported here입니다.

세션을 여러 달 지속하기를 원한다면 로그인 쿠키를 저장하기 위해 데이터베이스에 의존 할 것입니다.

+0

감사합니다. NEWPATH는 무엇이든 될 수 있습니다. 기존 사용자 세션에 영향을 미칩니 까? –

+0

PHP가 읽기/쓰기 권한을 가진 디렉토리의 경로 여야합니다. 'ini_set'을 사용하여 런타임에이를 설정하면, 그것은 그 세션에만 영향을 미칠 것이라고 믿습니다. 항상 실행되는 설정 파일에서이 작업을 수행하면 해당 설정 파일을 사용하는 모든 세션에 영향을 미칩니다. docs : http://php.net/manual/en/function.session-save-path.php – BeetleJuice

+0

나는 세션 저장소 경로를 변경하고 돌아올 것입니다. –