Как заканчивание сеанса автоматически

Что такой друзья работаю в проекте и у меня есть это, чтобы закрывать сеанс, но я хотел бы осуществить Хкери Конфирм проблема состоит в том, что не, как делание этого, у меня есть этот код, который реализует мне следующее с sweet alert:

var timeout; 
document.onmousemove = function(){ 
    clearTimeout(timeout); 
    timeout = setTimeout(function(){
        swal({
          title: "Cierre de Sesion Automatica",
          text: "Si deseas salir haz clic en Cerrar Sesion o en Cancel para continuar trabajando",
          type: "warning",
          showCancelButton: true,
          confirmButtonClass: "btn-danger",
          confirmButtonText: "Cerrar Sesion",
          closeOnConfirm: false,
          showLoaderOnConfirm: true,
        },
        function(isConfirm){
            if (isConfirm) {
                $.ajax({
                    url: base_url + "auth/logout",
                    type: "POST",
                    success:function(resp){
                        window.location.href= base_url;
                    }

                });
            }else{
                window.location.href = base_url + "movimientos/ordenes";
            }

        });
    }, 30000); 
} 

Esto lo hice con un sweet alert

Однако есть код, который мне предоставлял @Walter Cordova, но было бы нужно, чтобы они помогли мне осуществлять это в моем коде, так как я таким же образом нуждаюсь в обратном счете, и после этого разрушьте сеанс.

Это код @Walter Cordova, который функционирует очень хорошо, я это оставляю в ящике JS.

$( document ).ready(function() {
    $.confirm({
       title: 'Alerta!',
        content: 'La sesión esta por expirar.',
        autoClose: 'logoutUser|10000',
        buttons: {
            logoutUser: {
                text: 'cerrar sesión',
                action: function () {
                    $.alert('La sesión ha expirado');
                    //tu codigo AJAX                    
                }
            },
            cancelar: function () {
                $.alert('cancelado');
            }
        }
    });
});


Это мой драйвер Сеанса, и внизу эта функция logout, что разрушает сеанс:

    load->model("Usuarios_model");
    }
    public function index()
    {
        if ($this->session->userdata("login")) {
            redirect(base_url()."dashboard");
        }
        else{
            $this->load->view("admin/login");
        }


    }

    public function login(){
        $username = $this->input->post("username");
        $password = $this->input->post("password");
        $res = $this->Usuarios_model->login($username, sha1($password));

        if (!$res) {
            /*$this->session->set_flashdata("error","El usuario y/o contraseña son incorrectos");*/
            //redirect(base_url());
            echo "0";
        }
        else{
            $data  = array(
                'id' => $res->id, 
                'nombre' => $res->nombres,
                'rol' => $res->rol_id,
                'login' => TRUE
            );
            $this->session->set_userdata($data);
            //redirect(base_url()."dashboard");
            echo "1";
        }
    }

    public function logout(){
        $this->session->sess_destroy();
        redirect(base_url());
    }
}

1
задан 05.09.2018, 14:52
3 ответа

я приношу ответ на эту дискуссию, думаю, что я осложняюсь немного, но здесь оставляю код с решением, что он делает, состоит в том, что каждый раз, когда двигается мышь возобновляет счетчик все это включая clearTimeout, для демонстрации разместитесь в snippet, и они двигают мышь, потом оставляют это статическим, и за 3 секунды появится сообщение.

var base_url = 'fake_url';
var timeout;
document.onmousemove = function(){ 
    clearTimeout(timeout); 
    contadorSesion(); //aqui cargamos la funcion de inactividad
} 

function contadorSesion() {
   timeout = setTimeout(function () {
        $.confirm({
            title: 'Alerta de Inactividad!',
            content: 'La sesión esta a punto de expirar.',
            autoClose: 'expirar|10000',//cuanto tiempo necesitamos para cerrar la sess automaticamente
            type: 'red',
            icon: 'fa fa-spinner fa-spin',
            buttons: {
                expirar: {
                    text: 'Cerrar Sesión',
                    btnClass: 'btn-red',
                    action: function () {
                        salir();
                    }
                },
                permanecer: function () {
                    contadorSesion(); //reinicia el conteo
                    $.alert('La Sesión ha sido reiniciada!'); //mensaje
                    window.location.href = base_url + "dashboard";
                }
            }
        });
    }, 3000);//3 segundos para no demorar tanto 
}

function salir() {
    window.location.href = base_url + "auth/logout"; //esta función te saca
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js"></script>
2
ответ дан 20.11.2019, 05:35

Хорошо, ввиду твоего вопроса я принял бы решение использовать только confirm-js или SweetAlert , проблема, что ты сочетаешь два, librerГ-схвати, что они делают точно то же самое, asГ - что не verГ - в преимущество в том, чтобы сочетать их.

В примере, который я даю тебе, не будут функционировать они mГ©todos в php, но segГєn cГіdigo от твоего вопроса, прибыв к этому mГ©todo logout() она sesiГіn умирает действительно, только размещает хорошо маршрут этого драйвера и этот mГ©todo.

В тебе funciГіn:

var timeout;
var base_url = 'fake_url';

document.onmouseout = function(){ 
  contadorSesion(); //aqui cargamos la funcion de inactividad
} 

function contadorSesion() {
    setTimeout(function () {
        $.confirm({
            title: 'Alerta de Inactividad!',
            content: 'La Sesión esta a punto de expirar.',
            autoClose: 'expirar|3000',
            type: 'red',
            buttons: {
                expirar: {
                    text: 'Expirar',
                    btnClass: 'btn-red',
                    action: function () {
                        salir();
                    }
                },
                permanecer: function () {
                    contadorSesion(); //reinicia el conteo
                    $.alert('Sesión ha sido reiniciada!'); //mensaje
                }
            }
        });
    }, 10000);
}

function salir() {
    window.location.href = base_url + "/logout"; //esta función te saca
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js"></script>
2
ответ дан 20.11.2019, 05:35
  • 1
    У него есть ожидание 10s прежде чем выйдет сообщение –  Walter Cordova 05.09.2018, 15:07
  • 2
    Готовый я функционирую, как он ждал однако, он не применяется с событием onmousemove, как я способствую тому, чтобы только, когда будет бездеятельной система, он закрылся? –  WilsonicX 05.09.2018, 15:23
  • 3
    @WilsonicX, чтобы использовать событие mousemove , мы должны определять á преступница где moverá курсор, div например. то, что мне кажется немного тоскливым, если то, что ты хочешь, состоит в том, чтобы санкционировать всю систему, было бы наиболее прямым в document для того, чтобы он был возобновлен каждый раз, когда освежился экран –  Walter Cordova 05.09.2018, 16:22
  • 4
    Я комментирую тебе, что мне не нравится эта solució n, событие onmouseout выполнит contadorSesion() каждый раз, когда он находит бездействие, и событие onmousemove каждый раз, когда двинулся курсор в документе. Если я нахожу solució n оптимальная для того, чтобы ты использовал это событие, я издам мой ответ. –  Walter Cordova 05.09.2018, 18:18
  • 5
    Спасибо друг, всерьез я тебе благодарен за достаточно, из-за того, что время берет. –  WilsonicX 05.09.2018, 18:22

Не estГЎ так difГ-cil, только он состоит в том, чтобы копировать старую схему в нового. AquГ - не jalarГЎ, из-за которого нет back, и я уменьшил время в 3s. Мы ждем и verГЎs, как появляется mensajazo.

типов Привета

var timeout;
var base_url = 'fake_url';
document.onmousemove = function() {
  clearTimeout(timeout);
  timeout = setTimeout(function() {
    $.confirm({
      title: 'Cierre de Sesion Automatica',
      content: 'Si deseas salir haz clic en Cerrar Sesion o en Cancel para continuar trabajando',
      buttons: {
        confirm: function() {
          $.ajax({
            url: base_url + "auth/logout",
            type: "POST",
            success: function(resp) {
              window.location.href = base_url;
            }
          });
        },
        cancel: function() {
          window.location.href = base_url + "movimientos/ordenes";
        },
      }
    });
  }, 3000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js"></script>
0
ответ дан 20.11.2019, 05:35