php - 如何在 PHP 中保持用户登录一个月?
问题描述
我已经通过 StackOverflow 和其他论坛进行了搜索,但没有找到让我的代码工作的方法。我为我的用户设置了一个基本的登录机制,它工作得很好。但是,当浏览器关闭时,用户必须访问该站点并重新登录。我需要找到一种方法让用户在一个月内保持登录状态。
我研究了 cookie 并进行了两天的实验,但当我退出浏览器并重新加载网站时,用户始终处于注销状态。唯一有效的方法是使用 ini_set 更改 session.gc_maxlifetime 和 session.lifetime 变量,但出于某种奇怪的原因,无论我为这两个变量分配什么值,用户只会保持登录状态大约 4 小时。那么,有谁知道我在设置下面的 cookie 时是否做错了什么,或者我该如何解决我的问题?提前感谢您的回答,我对这个问题束手无策。
//create cookie, set expiration to one month (in seconds)
setcookie("user",$username,time()+2592000);
echo $_COOKIE["user"];
session_start();
//Login Successful, begin session
$member = mysqli_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['id'];
$_SESSION['SESS_FIRST_NAME'] = $member['username'];
$_SESSION['SESS_LAST_NAME'] = $member['password'];
$_SESSION['table'] = $table;
session_write_close();
//header("location: search.php");
exit();
解决方案
在登录页面添加(会话):
$_SESSION['timeout'] = time();
和索引检查:
session_start();
$timeout = 7200; //time in seconds
if(isset($_SESSION['timeout'])) {
$duracao = time() - (int) $_SESSION['timeout'];
if($duracao > $timeout) {
session_start();
session_destroy();
session_unset();
echo "<script type='text/javascript'>location.href='index.php'</script>";
}
}
推荐阅读
- asp.net - Asp.Net Core 5.0:如何删除与 Azure 数据库 SQL 的连接?
- angular - ng-alain 使用 SFUISchema 呈现密码字段
- c# - 我想将 messageBoxIcons 添加到图片框图像上
- reactjs - Core Ui CIcon 箭头未切换
- c# - 使用正则表达式识别包含单个句点的字符串
- python - 如何在带有文字的图形中绘制虚线?
- java - 如何列出 DCIM/Camera 文件夹中的文件?
- html - 为一个特定的标签内容调整 css
- reporting-services - 将 SSRS 2012 订阅的多份报告生成到一个 ZIP 文件中以通过电子邮件发送
- java - 如何将已保存的项目添加到 Flutter 中的收藏夹部分?