gpt4 book ai didi

更改目录时 PHP session 数据丢失?

转载 作者:行者123 更新时间:2023-12-05 05:29:11 24 4
gpt4 key购买 nike

我有一个使用 PHP session 的简单登录系统,但就在最近,如果您访问不在特定目录 (/login/) 中的页面,您将始终被标记为未登录,即使您已经登录。当我更改目录(例如/login/user/)时,我的 session 数据似乎丢失了。

自问题出现以来,我认为我自己并没有接触过代码,我的网络托管服务商是否对我的 PHP 安装做了一些删除 session 数据的操作,是否有解决方法?

编辑:
在每个需要授权的文件中,它加载一个 loginfunctions.php 文件,该文件调用 session_start() 并检查登录。在/login 中工作的文件和我复制并粘贴到/login/user 中的文件停止工作,即使我更新了所有相关路径和链接。

编辑2:好的,一些代码。

在给我错误的实际页面中,这是授权。代码:

require_once("../../../includes/loginFunctions.php");

$login = new login;
$login->checkLogin(0);

在 loginFunctions.php 里面是这样的:

class login{

function checkLogin($requiredAccess){

session_start();

if($_SESSION['accesslevel'] < $requiredAccess || $_SESSION['logged_in'] != TRUE){
die("You don't have access to this area. If you should have access, please log in again. <a href='/login/'>Login</a>");
}

if (isset($_SESSION['HTTP_USER_AGENT'])){
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])){
session_destroy();
die("Bad session. Please log in again. <a href='/login/'>Login</a> ");
}
} else {
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}

if (!isset($_SESSION['initiated'])){
session_regenerate_id();
$_SESSION['initiated'] = true;
}

}

}

$requiredAccess 变量是您访问此页面所需的访问级别,因此如果您在数据库中的访问级别为 3,则可以查看级别 0、1、2 和 3 的页面。这是在主页中调用该函数时指定的,并与当前用户登录时在 $_SESSIONS 中定义的访问级别进行比较。

当我尝试访问这些页面时,出现错误“您无权访问该区域等”。如果我尝试打印 $_SESSION 变量,则什么也没有显示;它们似乎是空的。但是,如果我将文件移动到/login/文件夹(上一级)并更新链接,它们可以完美运行并且所有变量都可以正常打印。这让我觉得代码不是不起作用的部分,而是一些设置在我的 PHP 安装中已更改,恕不另行通知。

最佳答案

也许您没有在不在/login/的页面开头调用 session_start() ..?

关于更改目录时 PHP session 数据丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705899/

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