gpt4 book ai didi

javascript - 在哪里调用 session_unset(user)

转载 作者:行者123 更新时间:2023-11-30 17:09:11 25 4
gpt4 key购买 nike

我有一个类别为“abc”的边栏。单击弹出的 div 加载要求用户登录或注册。一旦用户登录,它就会加载页面“xyz.php”。为了防止直接访问“xyz.php”,我在 post 上创建了一个 session 变量,如果 session 变量存在,则检查“xyz.php”:

<?php
session_start();
if (!isset($_SESSION['logged_in']))
header("Location: index.php");
?>

这工作得很好,我可以阻止对上述链接的直接访问。但是,一旦用户登录,就可以直接访问该页面。为了防止这种情况,我通过以下方式释放 session 变量:

<?php 
session_start();
session_unset('logged_in');
?>

但是,我在 index 文件中调用它,只有当用户访问 home page 时, session 变量才会被取消设置。用户登录并加载页面后,如何在整个网站上取消设置 session 变量?只有在用户再次输入登录凭据后,页面才会再次加载。没有适当的注销机制,也不需要。

最佳答案

根据上面的评论,我想我会详细说明一下,这不适合发表评论,所以在这里。

通常的做法是通过在 session 变量中设置超时来终止因不活动而导致的 session 。

假设您想要在 30 分钟不活动后终止 session ,无论是因为用户在您的网站上有 30 分钟没有做任何事情还是他们完全离开了网站。

您可以通过在您的 session 中创建一个变量(在本例中,我们将其称为最后一个操作)并在其中存储最后一个用户操作的时间戳来管理它。在每次页面刷新和更改时更新它,并检查自上次操作以来的时间是否大于超时阈值。如果是这样,终止 session 。

创建一个名为“updateSession.php”的文件:

<?php

session_start();
if((time() - $_SESSION["lastAction"]) > 1800) //1800 == 30 minutes
{
session_destroy();
header("Location:/timeout");
return;
}

$_SESSION["lastAction"] = time();

?>

然后在每个页面中包含这个文件:

include "{$_SERVER["DOCUMENT_ROOT"]}/path/to/updateSession.php";

关于javascript - 在哪里调用 session_unset(user),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com