우리는 회사의 고객 서비스 직원, 즉 제한된 수의 고객 서비스 직원만이 사용할 수 있는 시스템을 초기 단계에서 개발했습니다. 며칠 전 갑자기 이 질문을 제기한 것은 제한된 고객 서비스 직원이었습니다. 매 짧은 시간(페이지를 운영하지 않고 30분)마다 고객의 문제를 해결하고 싶어할 때 시스템은 우리에게 로그인이 필요하다는 메시지를 표시했습니다. 고객의 시간이 늦어졌습니다... 참으로 기분 나쁜 일입니다.
고객은 신, 유일한 신입니다. 그래서 상사는 고객 서비스 직원이 인위적으로 세션을 만료시키지 않는 한 PHP의 세션은 결코 만료되지 않는다는 점을 인식하라고 요청했습니다. 보안상의 이유로 이러한 만료되지 않는 동작을 이해하지 못합니다. 게으른 이유로 이전 프로그램을 수정하고 싶지 않습니다. 하지만 방법이 없습니다. 여전히 변화가 필요합니다.
가장 좋은 방법은 프로그램을 수정하지 않는 것입니다. 프로그램을 수정하면 테스트 부서가 저처럼 매우 우울해지기 때문입니다. 그러면 시스템 환경 구성만 수정하면 됩니다. 실제로는 매우 간단합니다. ini 설정 파일을 열고 다음 세 줄을 수정합니다.
1. session.use_cookies
이 값을 1로 설정하고 쿠키를 사용하여 sessionid를 전달합니다.
2. session.cookie_lifetime
이는 SessionID가 실행되는 시간을 나타냅니다. 기본값은 0 입니다. 이는 브라우저가 닫히자마자 SessionID가 무효화됨을 의미합니다... 이로 인해 PHP 세션을 영구적으로 사용할 수 없습니다. 따라서 숫자로 설정해 보겠습니다. 우리가 생각하는 것은 매우 크다고 생각합니다. 999999999는 어떻습니까? 괜찮습니다!
3. session.gc_maxlifetime
세션 데이터가 서버 측에 저장되는 시간입니다. 이 시간을 초과하면 세션 데이터가 자동으로 삭제됩니다. 그리고 99999999로 설정합니다.
그게 다입니다. 물론 믿을 수 없다면 테스트해보고 확인하세요. 세션을 설정하고 10일 반 후에 컴퓨터가 꺼지거나 충돌하지 않으면 다시 오세요. , 당신은 여전히 이 세션 ID를 볼 수 있습니다.
물론, 서버를 제어할 수 있는 권한이 없고 php.ini 설정을 수정하는 것이 저만큼 운이 좋지 않을 수도 있습니다. 물론, 스스로 의존하는 방법도 있습니다. 클라이언트를 사용하여 쿠키를 저장하고 sessionID를 가져와야 합니다. 이를 클라이언트의 쿠키에 저장하고 이 쿠키의 값을 설정한 다음 이 값을 session_id() 함수에 전달해야 합니다.
코드 복사 코드는 다음과 같습니다.
session_start() // 세션 시작
$_SESSION[ 'count']; // 세션 변수 개수 등록
isset($PHPSESSID )?session_id($PHPSESSID):$PHPSESSID = session_id()
// $PHPSESSID가 설정된 경우 $PHPSESSID에 SessionID를 할당합니다. 그렇지 않으면 SessionID 생성
$_SESSION['count']; // 변수 count에 1을 추가합니다.
setcookie('PHPSESSID', $PHPSESSID, time() 3156000) // SessionID를 쿠키에 저장합니다.
echo $ count; // 세션 변수 count 값 표시
?>