PHP에서 세션 시간 초과 설정

Subodh Poudel 2023년1월30일
  1. session_unset()session_destroy()함수를 사용하여 PHP에서 세션 시간 초과 설정
  2. unset()함수를 사용하여 PHP에서 세션 시간 초과 설정
  3. session_regenerate_id()함수를 사용하여 PHP에서 현재 세션 ID 변경
PHP에서 세션 시간 초과 설정

이 기사에서는session_unset()session_destroy()함수를 사용하여 PHP에서 세션을 삭제하는 방법을 소개합니다. 30 분 후에 세션을 폐기합니다. 세션을 파괴하기 위해 마지막 활동에서 현재 시간까지의 시간 간격을 확인합니다.

또한unset()함수를 사용하여 PHP에서 세션 시간 초과를 설정하는 또 다른 방법을 보여줍니다. unset()함수는 세션 변수를 매개 변수로 사용합니다. 이 메서드는 배열을 사용하여 세션 변수를 저장합니다.

session_regenerate_id()함수를 사용하여 현재 세션 ID를 무효화하는 또 다른 방법을 소개합니다. 이 함수는 이전 세션 ID를 파괴하는 현재 세션에 대한 새 세션 ID를 생성합니다.

session_unset()session_destroy()함수를 사용하여 PHP에서 세션 시간 초과 설정

session_unset()함수를 사용하여 런타임에$_SESSION변수를 설정 해제하고session_destroy()함수를 사용하여 스토리지에서 세션을 삭제할 수 있습니다. time()함수는 현재 시간을 반환합니다. $_SESSION변수를 사용하여 마지막 활동의 타임 스탬프를 저장할 수 있습니다. 따라서 마지막 활동에서 현재 시간까지의 차이를 계산하여 시간을 확인할 수 있습니다. 이런 식으로 세션의 시간 간격을 확인합니다.

예를 들어,session_start()함수를 사용하여 서버에서 세션을 시작하십시오. isset()함수로 세션이 생성되었는지 확인합니다. &&연산자를 사용하여issset()함수 내의 다른 조건을 확인합니다. time()함수에서 세션 변수start를 빼고 1800보다 큰 경우 결과를 확인합니다.if조건 안에session_unset()session_destroy()를 사용합니다. 그런 다음 세션이 삭제되었다는 메시지를 표시합니다. if조건 외부에서 세션 변수$_SESSION['start']를 만들고time()함수를 할당하여 세션을 업데이트합니다.

아래 예제에서 세션 변수가 아직 생성되지 않았으므로if조건이 실패합니다. 조건이 실패하면 세션이 생성됩니다. 사용자가 서버에 요청을 보내지 않으면 세션은 30 분 후에 만료됩니다. isset()함수의 후반부는 세션의 총 활성 시간을 확인합니다. 1800은 30 분에 해당하는 1800 초를 나타냅니다. 총 활성 시간이 30 분을 초과하면 if 조건이 참이됩니다. 그런 다음 세션을 파괴합니다. 코드의 출력은 활성 시간이 30 분 이상 지난 후 삭제되는 세션에 해당합니다. session_unset()함수에 대한 자세한 내용은 PHP 매뉴얼을 참조하십시오.

예제 코드 :

# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
    session_unset(); 
    session_destroy(); 
    echo "session destroyed"; 
}
$_SESSION['start'] = time();
?>

출력:

session destroyed

unset()함수를 사용하여 PHP에서 세션 시간 초과 설정

unset()함수를 사용하여 PHP에서 특정 세션 변수의 세션을 삭제할 수 있습니다. 이 함수는$_SESSION변수를 매개 변수로 사용합니다. 이 메서드는 세션을 배열에 저장합니다. 연관 배열을 사용하여 세션 이름과 세션 시작 시간을 저장할 수 있습니다. time()함수를 사용하여 현재 시간을 가져올 수 있습니다. 위에서 언급 한 방법에 따라 현재 시간에서 활성 세션 시간을 빼서 세션 시간 간격을 확인할 수 있습니다.

예를 들어session_start()함수를 사용하여 세션을 시작합니다. 세션 변수$_SESSION['start']를 작성하고 연관 배열을 할당합니다. 0registered키를 쓰고 각 키에 대해activetime()값을 씁니다. 시간 간격이 30 분 이상인지 확인하십시오. 조건이 참이면$_SESSION['start']를 매개 변수로 사용하여unset()함수를 작성하십시오. 그런 다음session destroyed메시지를 표시합니다. if조건 블록 외부에서time()함수를 사용하여 세션 변수$_SESSION['start']를 업데이트합니다.

아래 예에서 배열에는 세션 변수가 포함되어 있습니다. 세션 변수의 값은active입니다. time()함수는 배열에 현재 타임 스탬프를 생성하고registered키는 값을 보유합니다. $_SESSION슈퍼 글로벌 변수에 대한 자세한 내용은 PHP 매뉴얼을 확인하십시오.

예제 코드 :

#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>

출력:

session destroyed

session_regenerate_id()함수를 사용하여 PHP에서 현재 세션 ID 변경

session_regenerate_id()함수를 사용하여 현재 세션의 세션 ID를 변경할 수 있습니다. 이런 식으로 스크립트가 세션 고정을 방지 할 수 있습니다. 함수의 부울 값true를 사용하면 새 세션 ID를 생성 할 수 있습니다. 이 방법에서는 세션 ID 재생성 전후에session_id()함수를 사용하여 세션 ID를 인쇄 할 수 있습니다. 그러나 세션 ID가 변경 되어도 세션은 만료되지 않습니다. 사용자에게 다시 로그인하도록 요청합니다. 따라서 세션 고정을 방지합니다.

예를 들어session_id()함수를 사용하여 세션을 시작합니다. session_id()함수를 사용하여 현재 세션 ID를 표시합니다. 세션이 생성되었는지 확인하고$_SESSION['start']세션을 생성하고time()함수를 할당합니다. 위의 방법에서했던 것처럼 활성화되는 세션의 시간 간격을 찾으십시오. 조건이 참이면session_regenerate_id(true)함수를 사용하십시오. 세션 변수를 업데이트하십시오. 스크립트 끝에session_id()함수를 사용하여 새 세션 ID를 인쇄합니다.

예제 코드 :

#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>

출력:

​Old: t38kssej37un38mtsoa6lovh05 
Now: mak7i3in708c6rl2udd8gbfo3r ​ ​
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn