Как закрывать сеанс время спустя бездействия?

Я начинаю работать в Вебе и я появляется проблема.

В первой, не хорошо, поскольку функционирует рукописный шрифт в php, а именно не, если он работает бесконечно, итак, я хочу сделать рукописный шрифт, который меня вычисляло бы время сеанса пользователя внутри страницы и который некое время спустя бездействия, заканчивал бы сеанс и властвовало в страницу login.

Проблема лежит, что мне не ясно как дебет быть рукописным шрифтом также, где я ни должен называть это для того, чтобы этот проверил все время, если есть бездействие пользователя.

1
задан 20.04.2017, 14:52
2 ответа

Было бы возможно реализовывать, в момент создания SESSION , сохранять время в переменной SESSIÓN этот получается используя функцию украдите (в секунды), чтобы потом сравнивать со временем, которое желалось (Tiempo Actual - valorGuardado) > tiempoenSegundos для этого примера это будет 2 минуты

session_start();
if (!isset($_SESSION['tiempo'])) {
    $_SESSION['tiempo']=time();
}
else if (time() - $_SESSION['tiempo'] > 120) {
    session_destroy();
    /* Aquí redireccionas a la url especifica */
    header("Location: urlLogin");
    die();  
}
$_SESSION['tiempo']=time(); //Si hay actividad seteamos el valor al tiempo actual

Предыдущее решение, оно будет функционировать, но не удайся в детали и дело в том, что, когда бук активность переменная сохраняемого sessión не станет отвечающей совремнным требованиям а следовательно он всегда закончится в указанном времени (2minutos) без или с активностью. Для этого мы были бы должны обновлять наш изменчивый сеанс вне всего. Благодаря @Luis AlfredoSerranoDíaz из-за детали

7
ответ дан 24.11.2019, 12:36
  • 1
    привет, спасибо за ответ, это поле " $ _SESSION [' tiempo'] " на который он ссылается, или có mo дело в том, что ты показываешь ему время в квадратных скобках? – Alberto Rojas 15.11.2016, 02:11
  • 2
    Нет. Которое está внутри квадратных скобок это ключ, чтобы соглашаться на Вашу стоимость. Что распределен Нет. Которое está внутри квадратных скобок это ключ, чтобы соглашаться на Вашу стоимость. Что распределен [110]SESSION['tiempo']=time(); – Dev. Joel 15.11.2016, 03:21
  • 3
    Как я читаю в этом коде, не закрывает сеанс из-за inactvidad, только ты даешь время истечения сеансу будь бездеятельным или нет. Я не опытный в php, но вот то, что я понимаю. – Luis Alfredo Serrano Díaz 09.04.2018, 01:45

Я оставляю тебе еще один пример.

//Comprobamos si esta definida la sesión 'tiempo'.
if(isset($_SESSION['tiempo']) ) {

    //Tiempo en segundos para dar vida a la sesión.
    $inactivo = 1200;//20min en este caso.

    //Calculamos tiempo de vida inactivo.
    $vida_session = time() - $_SESSION['tiempo'];

        //Compraración para redirigir página, si la vida de sesión sea mayor a el tiempo insertado en inactivo.
        if($vida_session > $inactivo)
        {
            //Removemos sesión.
            session_unset();
            //Destruimos sesión.
            session_destroy();              
            //Redirigimos pagina.
            header("Location: tupagina");

            exit();
        }
} else {
    //Activamos sesion tiempo.
    $_SESSION['tiempo'] = time();
}
2
ответ дан 24.11.2019, 12:36
  • 1
    Оно я функционирует хорошо, но для меня закрывает сеанс 10 минут спустя, что definí хотя пользователь interacua со страницей, что он перемещает, состоит в том, что он не освежается, только это javascript, который меняет мне различные секции, я считаю, что он поэтому, так как, если они проводят 10 минут, и я перезагружаю страницу, закрывают для меня сеанс, хотя пользователь перейдет с одного сайта на другой в различных секциях. какая-то идея, чтобы это решать? – Alberto Rojas 26.11.2016, 01:26
  • 2
    Привет @albertoRojas, deberí схвати открывать новый вопрос, объясняя твою проблему, с частью có я говорю, где он бросает в тебя ошибку. Без có я говорю, что почти невозможно видеть где podrí схвати иметь конфликт, и как ты считаешь созданным JS. У меня есть тот же có я говорю осуществленный в моем Вебе и функционируй очень хорошо. Tambié n он нужен иметь в виду, у тебя например есть ли несколько pá ginas с сеансами, ты должен включать có я говорю в каждом pá gina. – D.Bulten 26.11.2016, 02:05