Что такой друзья работаю в проекте и у меня есть это, чтобы закрывать сеанс, но я хотел бы осуществить Хкери Конфирм проблема состоит в том, что не, как делание этого, у меня есть этот код, который реализует мне следующее с 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);
}
Однако есть код, который мне предоставлял @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());
}
}
я приношу ответ на эту дискуссию, думаю, что я осложняюсь немного, но здесь оставляю код с решением, что он делает, состоит в том, что каждый раз, когда двигается мышь возобновляет счетчик все это включая 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>
Хорошо, ввиду твоего вопроса я принял бы решение использовать только 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>
onmouseout
выполнит contadorSesion()
каждый раз, когда он находит бездействие, и событие onmousemove
каждый раз, когда двинулся курсор в документе. Если я нахожу solució n оптимальная для того, чтобы ты использовал это событие, я издам мой ответ.
– Walter Cordova
05.09.2018, 18:18
Не 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>