Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当会话过期而我们仍在查看页面时,我们应该怎么做?_Php - Fatal编程技术网

Php 当会话过期而我们仍在查看页面时,我们应该怎么做?

Php 当会话过期而我们仍在查看页面时,我们应该怎么做?,php,Php,我有一个包含$\u SESSION变量的页面。现在,经过一段时间后,所有会话都将过期,这是足够公平的。但问题是,$\u会话变量现在已过期,我们会突然收到未定义的通知 因此,在这种情况下,会话过期时最好做什么。我们只是在E^NOTICE代码中包含一个通知,以便不显示通知(在我们知道页面已完全完成且没有错误后),还是希望在页面上使用session\u destroy()销毁会话,或者是否有其他方法不向在浏览器上查看这些页面的用户显示这些未定义的错误,并且在会话过期时可能会查看这些页面 下面是关于如何

我有一个包含
$\u SESSION
变量的页面。现在,经过一段时间后,所有会话都将过期,这是足够公平的。但问题是,$\u会话变量现在已过期,我们会突然收到未定义的通知

因此,在这种情况下,会话过期时最好做什么。我们只是在
E^NOTICE
代码中包含一个通知,以便不显示通知(在我们知道页面已完全完成且没有错误后),还是希望在页面上使用
session\u destroy()
销毁会话,或者是否有其他方法不向在浏览器上查看这些页面的用户显示这些未定义的错误,并且在会话过期时可能会查看这些页面

下面是关于如何显示$\u会话代码的示例代码:

 <?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']; 

    }

    ?>


您可以使用
isset()
函数进行检查,就像您使用$\u POST vars和通知将消失一样

您可以使用
isset()
函数进行检查,就像您使用$\u POST vars和通知将消失一样

检查是否存在特定的哨兵值。e、 g.如果您对会话所做的任何操作都是针对受登录保护的系统,那么请检查
isset($\u SESSION['loggedIn'])&&($\u SESSION['loggedIn']==true)

如果sentinel值不存在,则表示会话发生了问题,您应该将用户重定向到其他位置,以将其恢复到应有的状态(例如,显示登录页面)


由于您无法预先知道“慢速”用户将点击哪个页面,因此您必须假设会话随时都可能消失,并在每个页面上执行哨兵检查。

检查是否存在特定的哨兵值。e、 g.如果您对会话所做的任何操作都是针对受登录保护的系统,那么请检查
isset($\u SESSION['loggedIn'])&&($\u SESSION['loggedIn']==true)

如果sentinel值不存在,则表示会话发生了问题,您应该将用户重定向到其他位置,以将其恢复到应有的状态(例如,显示登录页面)


由于您无法提前知道“慢”用户将点击哪个页面,因此您必须假设会话随时都可能消失,并在每个页面上执行哨兵检查。

首先,在实时站点中,您将希望有错误报告(0),因此您不会看到通知

如果不想再看到通知,还需要检查数组键。您可以使用
if(isset($\u SESSION['some\u key'))进行检查。


一旦您这样做,您就可以安全地使用该变量。

首先,在实时站点中,您将希望有错误报告(0),因此您不会看到通知

如果不想再看到通知,还需要检查数组键。您可以使用
if(isset($\u SESSION['some\u key'))进行检查。



一旦您这样做,您就可以安全地使用该变量。

在尝试使用之前,最好始终检查此类变量是否可用。在我看来,他似乎在寻找客户端解决方案。客户端使用$\u会话?别这么想,这是我的观点。他无法在客户端访问$\u会话。这就是他想要的吗?也许我误解了他的问题。他只是想在$\u会话不存在的情况下删除通知。在尝试使用之前,最好总是检查这样的变量是否可用。在我看来,他似乎在寻找客户端解决方案。客户端使用$\u会话?别这么想,这是我的观点。他无法在客户端访问$\u会话。这就是他想要的吗?也许我误解了他的问题。他只是想在$\u会话不存在时删除通知这是什么
$\u POST['sessionNum']
值?它是如何生成的?SessionNum来自另一个php脚本的前一页,您是否使用
$\u SESSION['SessionNum']
设置指向此脚本的表单字段?哦,您是在用户登录后设置该值的,对吗?这是什么
$\u POST['SessionNum']
值?它是如何生成的?SessionNum来自另一个php脚本的前一页,您是否使用
$\u SESSION['SessionNum']
设置指向此脚本的表单字段?哦,您是在用户登录后设置该值的,对吗?