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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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";

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

회원로그인

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