2014-10-10 1 views
0

사용자가 일정 기간 동안 비활성 상태 인 경우 닫아야하는 로그인 페이지가 있습니다. 세션 변수를 쿠키로 설정하는 것이 최선의 방법이라고 생각했습니다. (더 좋은 방법이 있거나 내 방식이 잘못 되었다면 알려주세요). 문제는 스크립트가 실행되기 전에 세션이 파괴되고 쿠키가 설정 해제되고 있다는 것입니다. if 문을 페이지 맨 아래로 이동해야합니까? if 문도 필요합니까? 나는이 권리조차하고 있니? 미리 감사드립니다.사용자가 로그인 한 후 세션에 대한 시간 초과 설정

<?php 
    require("../includes/header.php"); 
    $expire = time() + 90; 
    setcookie("User", $_SESSION["user"], $expire); 
    setcookie("Image", $_SESSION["image"], $expire); 
    setcookie("Program", $_SESSION["program"], $expire); 
    setcookie("Email", $_SESSION["email"], $expire); 
    setcookie("Role", $_SESSION["role"], $expire); 
    if($expire){ 
     unset($_COOKIE["User"]); 
     unset($_COOKIE["Image"]); 
     unset($_COOKIE["Program"]); 
     unset($_COOKIE["Email"]); 
     unset($_COOKIE["Role"]); 
     session_destroy(); 
     echo "Session has expired."; 
    } 
?> 
<body> 
    <div id="page"> 
     <header> 
      <div id="logo" class="logo_bg"></div> 
      <div id="fsi_logo" class="logo_bg"></div> 
     </header> 

     <div id="main"> 
      <div id="instructor"> 
       <?php 
        echo "<img id=instructor_image src=" .$_COOKIE["Image"] .">"; 
        echo "<h1>" .$_COOKIE["User"] ."</h1>"; 
        echo "<span><p>" .$_COOKIE["Program"] ."</p> - <h2>" .$_COOKIE["Role"] ."</h2></span>"; 
        echo "<a href=mailto:" .$_COOKIE["Email"] .">" .$_COOKIE["Email"] ."</a>"; 
       ?> 
      </div> 
<?php require("../includes/footer.html"); ?> 
+1

나는 비슷한 일을했고, 나는이 답변으로 문제가 해결되지 않는 알지만, 당신은 JS 또는 어떤 jQuery를 괜찮다면, 아주 잘 작동 대기 시간 초과라는 플러그인이 설치가 쉽습니다. – Jim

+0

실제로 프런트 엔드 작업 기능을 수행하기 위해 jQuery를 사용하고 있습니다. 나는 플러그인을 체크 아웃 할 것이지만 프론트 엔드에서 더 이상 플러그인을 사용하고 싶지는 않습니다. 그것이 그것에 관해서라면, 나는 아마 그것을 사용할 것이다. 해당 참조 주셔서 감사합니다. –

답변

0

예에서 ($ 만료)가 항상 true 인 경우. 만료 시간을 세션에 저장하면 페이지의 맨 아래로 이동할 필요가 없습니다. 이런 식으로 뭔가 :

if(!isset($_SESSION["expire"])) { 
    $_SESSION["expire"] = time() + 90; // This would add 90 seconds though... 

    // More set logic 
} elseif($_SESSION["expire"] < time()) { 
    // Unset logic 
} else { 
    // Refresh timer 
} 
+0

그럼 예를 들어 시간을 90 초로 설정하는 방법은 무엇입니까? 그것은 시간이 될 것입니까 (90)? –

+0

당신이 한 것은 옳았습니다. 현재 시간에 90 초를 더했습니다(). –

관련 문제