PHP 세션 제한 시간
PHPPHP 세션 제한 시간
사용자가 다음과 같이 로그인 할 때 세션을 만들고 있습니다.
$_SESSION['id'] = $id;
X 분의 해당 세션에서 시간 제한을 지정한 다음 X 분에 도달하면 함수 또는 페이지 리디렉션을 수행하는 방법은 무엇입니까 ??
편집 : 비 활동으로 인해 세션이 필요하다고 언급하는 것을 잊었습니다.
해결법
-
==============================
1.먼저 사용자가 마지막으로 요청한 시간을 저장합니다.
먼저 사용자가 마지막으로 요청한 시간을 저장합니다.
<?php $_SESSION['timeout'] = time(); ?>
후속 요청에서 이전에 요청한 시간 (이 예에서는 10 분)을 확인하십시오.
<?php if ($_SESSION['timeout'] + 10 * 60 < time()) { // session timed out } else { // session ok } ?>
-
==============================
2.세션이 만료되면 데이터가 더 이상 존재하지 않으므로
세션이 만료되면 데이터가 더 이상 존재하지 않으므로
if (!isset($_SESSION['id'])) { header("Location: destination.php"); exit; }
세션이 더 이상 활성화되지 않을 때마다 리디렉션됩니다.
session.cookie_lifetime을 사용하여 세션 쿠키의 수명을 설정할 수 있습니다
ini_set("session.cookie_lifetime","3600"); //an hour
수정 : 보안 문제 (편의성 대신)로 인해 세션 시간을 초과하는 경우 허용 된 대답을 사용하십시오. 아래 주석이 보여 주듯이 이는 클라이언트가 제어하므로 안전하지 않습니다. 나는 이것을 보안 수단으로 생각하지 않았다.
-
==============================
3.세션이 아직 생성되지 않았 으면 먼저 확인하고 생성하지 않으면 세션을 확인하십시오. 여기서는 1 분 동안 만 설정합니다.
세션이 아직 생성되지 않았 으면 먼저 확인하고 생성하지 않으면 세션을 확인하십시오. 여기서는 1 분 동안 만 설정합니다.
<?php if(!isset($_SESSION["timeout"])){ $_SESSION['timeout'] = time(); }; $st = $_SESSION['timeout'] + 60; //session time is 1 minute ?> <?php if(time() < $st){ echo 'Session will last 1 minute'; } ?>
-
==============================
4.
<script type="text/javascript"> window.setTimeout("location=('timeout_session.htm');",900000); </script>
사이트 테스트 중에는 모든 페이지의 헤더에 나와 있습니다 (아직 사이트가 제작되지 않았습니다). 끝내기 위해 떨어지는 HTML 페이지는 세션을 끝내고 사용자에게 다시 로그인 할 필요성을 알립니다. 이것은 PHP 로직을 사용하는 것보다 쉬운 방법입니다. 아이디어에 대한 몇 가지 의견을 듣고 싶습니다. 내가 본 어떤 함정도 그것에서 보지 못했습니까?
-
==============================
5.
<?php session_start(); if (time()<$_SESSION['time']+10){ $_SESSION['time'] = time(); echo "welcome old user"; } else{ session_destroy(); session_start(); $_SESSION['time'] = time(); echo "welcome new user"; } ?>
-
==============================
6.Byterbit 솔루션은 다음과 같은 이유로 문제가됩니다.
Byterbit 솔루션은 다음과 같은 이유로 문제가됩니다.
쿠키의 경우 session.cookie_lifetime을 통해 만료를 설정하면 현명한 해결책이 될 수 있습니다. 세션을 만료하려면 session.gc_maxlifetime을 사용할 수 있습니다.
session_destroy를 호출하여 쿠키를 만료하면 이미 만료되었을 수 있으므로 예기치 않은 결과가 발생할 수 있습니다.
php.ini에서 변경 작업을하는 것도 유효한 해결책이지만 전체 도메인에 대해 만료를 글로벌하게 만듭니다. 일부 페이지는 다른 쿠키보다 더 많은 쿠키를 유지할 수도 있습니다.
-
==============================
7.
session_cache_expire( 20 ); session_start(); // NEVER FORGET TO START THE SESSION!!! $inactive = 1200; //20 minutes *60 if(isset($_SESSION['start']) ) { $session_life = time() - $_SESSION['start']; if($session_life > $inactive){ header("Location: user_logout.php"); } } $_SESSION['start'] = time(); if($_SESSION['valid_user'] != true){ header('Location: ../....php'); }else{
출처 : http://www.daniweb.com/web-development/php/threads/124500
-
==============================
8.
<?php session_start(); if($_SESSION['login'] != 'ok') header('location: /dashboard.php?login=0'); if(isset($_SESSION['last-activity']) && time() - $_SESSION['last-activity'] > 600) { // session inactive more than 10 min header('location: /logout.php?timeout=1'); } $_SESSION['last-activity'] = time(); // update last activity time stamp if(time() - $_SESSION['created'] > 600) { // session started more than 10 min ago session_regenerate_id(true); // change session id and invalidate old session $_SESSION['created'] = time(); // update creation time } ?>
from https://stackoverflow.com/questions/3068744/php-session-timeout by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP에서 MySQL * .sql 파일 실행하기 (0) | 2018.09.18 |
---|---|
제출시 체크 박스 값 가져 오기 (0) | 2018.09.18 |
PHP는 배열을 SubArray 값으로 정렬합니다. (0) | 2018.09.18 |
HTML 콘텐츠에서 스크립트 태그 제거 (0) | 2018.09.18 |
문자열에서 줄 바꿈 (문자 없음!)을 제거하는 방법? (0) | 2018.09.18 |