php 자동 로그아웃 방법 부탁드립니다.
본문
안녕하세요. 하나둘씩 공부해나가고 있는 뉴비입니다.
보안의 이유로 일정기간 활동이 없을시 자동로그아웃 후 해당 페이지가 자동 로그아웃 페이지로 이동 될수 있도록 하려는데 꼭 도움 부탁드리겠습니다.
잘 모르는 초보라 어떤 파일에 어떻게 어떤 코드를 삽입 해야하는지 자세히 알려주시면 감사하겠습니다.
관련하여 "php 자동 로그아웃" 등의 키워드로 나오는 방법은 이것저것 다 적용해보았는데 잘적용이 안되는것 같습니다.
우선 php.ini 에서 session 을 건드리는 방법도 해 보았고요
scrip 를 head.php 에 넣는 방법도 써 보았는데 잘 동작을 하지 않습니다.
sub_head 에 삽입하는 방법을 써도 잘 안되고요.
꼭 해당 기능이 필요한데 잘 적용이 안되어 답답합니다. 고수님들의 답변 부탁드립니다. 감사합니다.
답변 5
php 보다는 자바스크립트를 이용하는 게 좋지 않을까 생각해 봅니다.
로그인 시 로그인 시간을 쿠키로 작성 -> 페이지 이동 또는 클릭 등의 이벤트 발생 시 쿠키 시간 갱신
setInterval 함수를 이용하여, 일정시간마다 쿠키를 체크하여 정해진 시간이 넘어선 경우 로그아웃 시키면 되지 않을까 싶네요.
저도 메이드님처럼 자바스크립트 셋인터벌 추천이요.
저 같으면 세션스토리지 변수를 하나 데이터를 0으로 생성하고
1분이 지날때마다 1씩 더해나가다 그값이 60 이 되면 즉 한시간이 되면 클리어인터벌이 되고 동시에 세션스토리지 클리어 후 로그아웃 페이지로 경로를 이동시키는 코드를 만들 것 같습니다.
<?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(); // 사용자의 마지막 활동 시간 업데이트
다음과 같은 방법도 있으니 참고하셔서 원하시는 형식으로 구현 하시면 될 것 같습니다.
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 파일생성
예를 들어 아래와 같이 하시면 될 것 같습니다.
<?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 스크립트를 포함시킴.
<script type="text/javascript" src="your-js-file.js"></script>
여기서 "your-js-file.js"는 앞에서 작성한 JavaScript 코드가 포함된 파일의 경로입니다.
!-->!-->!-->웹메이킹 님의 답변에서 이미 logout.php는 화일이 있으니 logout.php 파일생성은 필요 없고
다음부분만 고치면 좋겠습니다
window.location.href = 'logout.php'; ==> window.location.href = "<?php echo G5_BBS_URL;?>/logout.php";