안녕하세요. 하나둘씩 공부해나가고 있는 뉴비입니다.
보안의 이유로 일정기간 활동이 없을시 자동로그아웃 후 해당 페이지가 자동 로그아웃 페이지로 이동 될수 있도록 하려는데 꼭 도움 부탁드리겠습니다.
잘 모르는 초보라 어떤 파일에 어떻게 어떤 코드를 삽입 해야하는지 자세히 알려주시면 감사하겠습니다.
관련하여 "php 자동 로그아웃" 등의 키워드로 나오는 방법은 이것저것 다 적용해보았는데 잘적용이 안되는것 같습니다.
우선 php.ini 에서 session 을 건드리는 방법도 해 보았고요
scrip 를 head.php 에 넣는 방법도 써 보았는데 잘 동작을 하지 않습니다.
sub_head 에 삽입하는 방법을 써도 잘 안되고요.
꼭 해당 기능이 필요한데 잘 적용이 안되어 답답합니다. 고수님들의 답변 부탁드립니다. 감사합니다.
답변 5개
다음과 같은 방법도 있으니 참고하셔서 원하시는 형식으로 구현 하시면 될 것 같습니다.
Copy
var inactivityTimeout = 30 * 60 * 1000; // 30분을 밀리초로 변환
var inactivityTimer;
function resetInactivityTimer() {
clearTimeout(inactivityTimer);
inactivityTimer = setTimeout(function () {
// 자동 로그아웃 처리
window.location.href = 'logout.php';
}, inactivityTimeout);
}
// 페이지 로드 시 또는 사용자 활동 발생 시 호출
function userActivity() {
resetInactivityTimer();
}
// 사용자 활동 이벤트 감지 (마우스 이동, 클릭, 키보드 입력 등)
document.addEventListener('mousemove', userActivity);
document.addEventListener('mousedown', userActivity);
document.addEventListener('keydown', userActivity);
// 초기 로드 시 타이머 시작
resetInactivityTimer();
사용자의 활동을 추적하고, 30분 동안 활동이 없는 경우 logout.php로 자동으로 리디렉션합니다. resetInactivityTimer 함수는 사용자 활동이 감지될 때마다 호출되며 타이머를 재설정 하게 됩니다,
logout.php 파일생성
예를 들어 아래와 같이 하시면 될 것 같습니다.
Copy
<?php
session_start();
session_unset();
session_destroy();
?>
<!DOCTYPE html>
<html>
<head>
<title>자동 로그아웃</title>
</head>
<body>
<p>자동 로그아웃되었습니다. <a href="login.php">다시 로그인</a></p>
</body>
</html>
HTML 페이지의 <head> 섹션 또는 <body> 섹션에 JavaScript 스크립트를 포함시킴.
Copy
<script type="text/javascript" src="your-js-file.js"></script>
여기서 "your-js-file.js"는 앞에서 작성한 JavaScript 코드가 포함된 파일의 경로입니다.
Copy
<?php
session_start();
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 3600)) {
// 사용자 활동이 1시간 동안 없으면 세션 파기
session_unset();
session_destroy();
header("Location: 로그아웃페이지URL");
}
$_SESSION['last_activity'] = time(); // 사용자의 마지막 활동 시간 업데이트
답변을 작성하려면 로그인이 필요합니다.