2017-11-28 1 views
0

10 개가 넘는 다른 PHP 파일로 웹 사이트를 만들고 있습니다. 로그인 페이지에서 시작하여 사용자가 비활성 상태인지 확인하고 싶습니다. 따라서 사용자가 로그인하여 특정 기간 동안 유휴 상태를 유지하면 해당 사용자를 로그 아웃해야합니다. 나는 PHP 새로운 오전 현재 내가 여기에 대한 답을 찾을특정 시간 동안 사용하지 않으면 로그 아웃

if (isset($_SESSION["LAST_ACTIVITY"])) { 
    if (time() - $_SESSION["LAST_ACTIVITY"] > 1800)) { 
     // last request was more than 30 minutes ago 
     session_unset();  // unset $_SESSION variable for the run-time 
     session_destroy(); // destroy session data in storage 
    } else if (time() - $_SESSION["LAST_ACTIVITY"] > 60) { 
     $_SESSION["LAST_ACTIVITY"] = time(); // update last activity time stamp 
    } 
} 

입니다 비슷한 질문에 대한 답변을 사용하고 있습니다 : 나는 별도의 페이지라는 session.php를 작성 붙여 넣은

expire session when there is no activity in PHP

을 위의 링크에있는 코드. 그런 다음 로그인 페이지에 session.php 파일을 포함 시켰습니다.이 파일은 입력 한 자격 증명을 확인하고 사용자를 기록합니다. 문제는 if 루프가 실행되지 않고 $ _SESSION [ 'LAST_ACTIVITY'] 변수를 정의하는 방법을 모르겠다는 것입니다.

$query = "SELECT * 
      FROM user_details 
      WHERE username = '$username' 
      AND password = '$password'"; 

    $result = mysqli_query($dbconnect, $query); 
    $row = mysqli_fetch_array($result); 

    $count = mysqli_num_rows($result); 

    if ($count == 1) { 
    session_start(); 
    echo "Welcome " .$username. "</br>"; 
    $_SESSION['username'] = $username; 
    $login_time = time(); 
    $_SESSION["LAST_ACTIVITY"] = $login_time ; 
    include('session.php'); 

나는 또한 파일의 시작 부분에하지만 아무 소용이 session.php을 포함하여 시도 : 나는 내 로그인 페이지에서 다음을 사용했다. 문제는 다음과 같습니다. time() - $ _SESSION [ "LAST_ACTIVITY"]이 0과 같음. 마지막 활동 시간을 저장하고 현재 시간과 비교하려면 어떻게해야합니까? 또한 웹 사이트가 사용자 활동을 확인하기 위해 다른 모든 웹 페이지 파일에 session.php를 포함시켜야합니까? 그렇다면 시작이나 끝에 포함시켜야합니까?

답변

0

이 코드는 세션 시간 초과 문제를 해결합니다.

<?php 
// set timeout period in seconds 
$inactive = 60; //after 60 seconds the user gets logged out 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
$session_life = time() - $_SESSION['timeout']; 
if($session_life > $inactive) 
    { 
     session_destroy(); 
     header("Location: Logout.php"); 
    } 
} 
$_SESSION['timeout'] = time(); 

은?>

+0

어떻게 $ _SESSION [ '타임 아웃']의 값을 초기화 할 수 있습니까? 이 코드 조각은 $ _SESSION [ 'timeout'] 값을 가져 와서 첫 번째 if 루프를 평가할 수 있습니까? – Ajay

+0

$ _SESSION [ 'timeout'] = 시간(); 이것은 $ _SESSION [ 'timeout']의 값을 초기화 할 것입니다. 루프의 끝 부분에서이 줄을 썼습니다. –

관련 문제