php - 停止会话注销用户
问题描述
我添加了一些代码来尝试阻止用户自动注销(会话)。- 但这么长时间后它仍然记录用户
我想要的是让用户在登录时能够访问多个页面,并且在他们空闲时不会将它们注销,因此我放置了很长的空闲时间 - 或者换句话说,保持登录状态直到他们决定单击注销.
登录页面
$result = mysqli_query($connection,$query) or die(mysql_error());
$rows = mysqli_num_rows($result);
if($rows==1){
$_SESSION['username'] = $username;
$_SESSION['username']=time();
// Redirect user to index.php
header("Location: admin-index.php");
}else{
$_SESSION['incorrect'] = 'Incorrect email or password. Please try again.';
header ("Location: admin-login.php?=incorrectlogin");
}
}
登录索引页面
<?php
session_start();
$idletime=6000000;
if (time()-$_SESSION['username']>$idletime){
session_destroy();
session_unset();
header ("Location: admin-login.php");
}else{
$_SESSION['username']=time();
}
//on session creation
$_SESSION['username']=time();
?>
<!DOCTYPE html>
<html lang="en" >
<head>
第二个php页面
<?php
session_start();
if(!isset($_SESSION["username"])){
header("Location: admin-login.php");
exit(); }
?>
解决方案
有几种处理方法:
您可以更改服务器本身会话的生命周期,或者如果您无法访问服务器设置,您可以尝试通过代码覆盖它:
ini_set('session.gc_maxlifetime', 6000000);
如果您无法更改服务器上会话的生命周期,您可以使用这个小代码“技巧”,请记住,如果客户端 pc 关闭或进入睡眠模式,会话也将过期:
基本上,您创建一个 php 脚本,其中包含:
session_start();
其次,您只需使用以下代码编写一些 jquery:
$(document).ready(function() {
// keep alive
setTimeout(keepalive(),120000);
});
function keepalive() {
$.get( "url/to/ajax.php", function( data ) { setTimeout(callserver,12000); });
}
推荐阅读
- javascript - 如何通过 Vue.js 搜索功能调用 Firebase 数据
- formal-verification - Uppaal 验证未按预期工作
- java - 主要方法不应该被声明为静态的还是其他方法应该被声明为静态的?爪哇
- python - 使用 Keras 评估不同大小的训练和测试数组
- centos - Openstack Queens 安装问题(network.pp/puppet 错误)
- html - 为弹性项目创建 CSS 填充实用程序?
- python - 在python中创建字典字典
- javascript - 使用 PHP 数据在 Google 地图上放置多个标记
- python - 在 Ubuntu 18.04 上运行 Keras MNIST 示例 - GPU 错误
- c++ - 使用循环显示虚拟功能