PHP에서 세션 시간 초과 설정
-
session_unset()
및session_destroy()
함수를 사용하여 PHP에서 세션 시간 초과 설정 -
unset()
함수를 사용하여 PHP에서 세션 시간 초과 설정 -
session_regenerate_id()
함수를 사용하여 PHP에서 현재 세션 ID 변경
이 기사에서는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']
를 작성하고 연관 배열을 할당합니다. 0
및registered
키를 쓰고 각 키에 대해active
및time()
값을 씁니다. 시간 간격이 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 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