我在下面有一个代码,它检查老师是否登录。通过会话检查教师登录状态的 $_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>";
}
?>
现在,如果会话已过期,那么它会显示Please Login to Access this Page
正确的消息。但是我遇到的问题是,当会话过期时,它开始在此页面上显示未定义$_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";
}
?>
我要问的是,当会话在某些页面中过期时,它不会破坏会话变量,因为我在这些页面中放置了用户需要在注销之前进行确认的确认,因为它似乎是唯一的页面显示未定义会话变量错误的问题都在这些页面上,其他 php 脚本在会话用完时没有这个问题。
以下是注销确认代码:
$(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