php 자동 로그아웃 방법 부탁드립니다.

php 자동 로그아웃 방법 부탁드립니다.

QA

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";

답변을 작성하시기 전에 로그인 해주세요.
전체 4

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT