Как мне закончить сеанс PHP через 30 минут? - PullRequest
995 голосов
/ 06 февраля 2009

Мне нужно сохранить сеанс в течение 30 минут, а затем уничтожить его.

Ответы [ 13 ]

0 голосов
/ 29 марта 2019

Вы можете прямо использовать БД, чтобы сделать это в качестве альтернативы. Я использую функцию БД, чтобы сделать это, что я вызываю chk_lgn.

Проверьте проверки входа в систему, чтобы увидеть, вошли ли они в систему или нет, и при этом она устанавливает отметку даты и времени проверки как последней активной в строке / столбце БД пользователя.

Я тоже проверяю время там. На данный момент это работает для меня, так как я использую эту функцию для каждой страницы.

P.S. Никто из тех, кого я видел, не предлагал чистого решения БД.

0 голосов
/ 27 декабря 2018

Используйте этот класс в течение 30 минут

class Session{
    public static function init(){
        ini_set('session.gc_maxlifetime', 1800) ;
        session_start();
    }
    public static function set($key, $val){
        $_SESSION[$key] =$val;
    }
    public static function get($key){
        if(isset($_SESSION[$key])){
            return $_SESSION[$key];
        } else{
            return false;
        }
    }
    public static function checkSession(){
        self::init();
        if(self::get("adminlogin")==false){
            self::destroy();
            header("Location:login.php");
        }
    }
    public static function checkLogin(){
        self::init();
        if(self::get("adminlogin")==true){
            header("Location:index.php");
        }
    }
    public static function destroy(){
        session_destroy();
        header("Location:login.php");
    }
}
0 голосов
/ 21 марта 2018

Использование отметки времени ...

<?php
if (!isset($_SESSION)) {
    $session = session_start();
} 
if ($session && !isset($_SESSION['login_time'])) {
    if ($session == 1) {
        $_SESSION['login_time']=time();
        echo "Login :".$_SESSION['login_time'];
        echo "<br>";
        $_SESSION['idle_time']=$_SESSION['login_time']+20;
        echo "Session Idle :".$_SESSION['idle_time'];
        echo "<br>";
    } else{
        $_SESSION['login_time']="";
    }
} else {
    if (time()>$_SESSION['idle_time']){
        echo "Session Idle :".$_SESSION['idle_time'];
        echo "<br>";
        echo "Current :".time();
        echo "<br>";
        echo "Session Time Out";
        session_destroy();
        session_unset();
    } else {
        echo "Logged In<br>";
    }
}
?>

Я использовал 20 секунд, чтобы закончить сеанс, используя отметку времени .

Если вам нужно 30 минут, добавьте 1800 (30 минут в секундах) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...