我有一个包含$_SESSION
变量的页面。现在经过一定时间后,所有会话都将过期,这很公平。但问题是,我们突然收到关于 $_SESSION 变量的未定义通知,因为它们现在已过期。
因此,在这种情况下,会话到期时最好做的事情是什么。我们是否只包含E ^ NOTICE
代码以不显示通知(在我们知道页面完全完整且没有错误之后),或者我们是否希望销毁session_destroy()
页面上使用的会话,或者是否有其他方式不显示这些未定义的错误给正在浏览器上查看这些页面的用户,并且可以在会话到期时查看该页面。
下面是关于如何显示 $_SESSION 代码的示例代码:
<?php
ini_set('session.gc_maxlifetime',12*60*60); //12 hours until session expires
ini_set('session.gc_divisor', '1');
ini_set('session.gc_probability', '1');
ini_set('session.cookie_lifetime', '0');
require_once 'init.php';
session_start(); //starts sessions
include('member.php'); //this php script also contains sessions
if (isset($_POST['id'])) {
$_SESSION['id'] = $_POST['id'];
}
if(isset($_POST['sessionNum'])){
//Declare my counter for the first time
$_SESSION['initial_count'] = $_POST['sessionNum'];
$_SESSION['sessionNum'] = intval($_POST['sessionNum']);
$_SESSION['sessionCount'] = 1;
}
if (isset($_POST['submitDetails']) && $_SESSION['sessionCount'] < $_SESSION['sessionNum']) {
$_SESSION['sessionCount']++;
}
$sessionMinus = $_SESSION['sessionCount'];
if (isset($_POST['textQuestion'])) {
$_SESSION['textQuestion'] = $_POST['textQuestion'];
}
if (isset($_POST['textMarks'])) {
$_SESSION['textMarks'] = $_POST['textMarks'];
}
if (isset($_POST['totalWeight'])) {
$_SESSION['totalWeight'] = $_POST['totalWeight'];
}
if ($sessionMinus == $_SESSION['initial_count']){
$action = 'individualmarks.php';
}elseif($sessionMinus != $_SESSION['initial_count']){
$action = $_SERVER['PHP_SELF'];
}
?>