现在,如果 session 已过期,-6ren">
gpt4 book ai didi

php - 是否需要确认导致显示未定义的 session 变量?

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:32 25 4
gpt4 key购买 nike

我在下面有一段代码,它检查教师是否登录。通过 session 检查教师登录状态的 $_SESSION 变量在member.php 脚本。

<?php

session_start();

include('member.php');
include('teachername.php');
...

if ((isset($username)) && (isset($userid))){


...

}else{

echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";

}

?>

现在,如果 session 已过期,则显示正确的 Please Login to Access this Page 消息。但我遇到的问题是,当 Sessions已过期,它开始在此页面上显示未定义的 $_SESSION 变量通知,因为我在此页面上有 session 。

但它不会在 session 过期后在每个页面上显示通知。它只显示用户必须确认注销的页面。您在 include(teachername.php) 代码中看到它显示注销代码,如下所示:

<?php

...

echo "Logged In: <b>{$_SESSION['teacherforename']} {$_SESSION['teachersurname']}</b> | <a id='teachlogout' href='./teacherlogout.php'>Logout</a>";
echo "<br/><a id='resetlink' href='./resetpass.php'>Reset Your Password</a>";

?>

当用户点击 Logout 链接时,它会执行下面的 session_destroy():

<?php

if ((isset($username)) && (isset($userid))){

session_destroy();

echo "You have been Logged Out | <a href='./home.php'>Home</a>";
}

else {

echo "You are Not Logged In";

}



?>

我要问的是,当 session 在某些页面中过期时,它是否不会破坏 session 变量,因为我已经在这些页面中进行了确认用户在注销前需要确认的页面,因为似乎只有显示未定义 session 变量错误的页面是所有页面在这些页面上,其他 php 脚本在 session 用完时没有这个问题。

注销确认代码如下:

$(function() {   

function logoutHandler() {
return confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n");
}

$('#teachlogout').click(logoutHandler);

#teachlogout 是注销链接的id

最佳答案

您应该在尝试使用之前检查 session 变量是否已设置。我会将该代码放在 echo 语句之外。例如

$firstname = isset($_SESSION['teacherforename'])?$_SESSION['teacherforename']:'';

然后将没有姓名的用户视为未登录。

关于php - 是否需要确认导致显示未定义的 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264679/

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