Php 会话在应该被终止之前被终止

Php 会话在应该被终止之前被终止,php,Php,所以我想我可以控制一个会话何时结束,但结果并没有按计划进行。我不知道为什么 我认为我应该分享我认为最相关的东西,而不是抛弃我所有的代码。如果需要更多,请让我知道: UserManagement.php: /// <summary> /// Attempts to return an authenticated user. /// </summary> function SignIn($emailAddress, $password) { $user = ORM::

所以我想我可以控制一个会话何时结束,但结果并没有按计划进行。我不知道为什么

我认为我应该分享我认为最相关的东西,而不是抛弃我所有的代码。如果需要更多,请让我知道:

UserManagement.php:

/// <summary>
/// Attempts to return an authenticated user.
/// </summary>
function SignIn($emailAddress, $password)
{
    $user = ORM::for_table('Users')->where_equal('EmailAddress', $emailAddress)->where_equal('Password', sha1($password))->find_one();

    if($user != null)
    {
        $_SESSION['SI'] = true;

        $_SESSION['FirstName'] = $user->get('FirstName');
        $_SESSION['LastName'] = $user->get('LastName');
        $_SESSION['EmailAddress'] = $user->get('EmailAddress');
        $_SESSION['UserID'] = $user->get('UserID');

        $_SESSION['LastActive'] = time();

        $user = null;
    }
    else
    {
        SignOut();
    }

    return $_SESSION['SI'];
}
//
///确定用户是否仍处于活动状态,并相应地执行操作。
/// 
if(session_status()==PHP_session_ACTIVE)
{
$secondsofactivity=18000;
$sessionLife=time()-$\会话['LastActive'];
如果($sessionLife>$SecondsOfInactive)
{
签出();
}
//if(time()-$\u会话['LastActive']>180)
//{
////用户已停用3分钟。请将其注销。
//签出();
//}
//否则
//{
//$\u会话['LastActive']=time();
//}
}
函数SignedIn()
{        
返回布尔值($\u会话['SI'])==true?true:false;
}//...
SignIn.php:

<?php
    session_start();

    require_once 'Configuration.php';
    require_once 'UserManagement.php';

    echo SignedIn() ? 'Hi' : 'Bye';//...

很难看到您所给出的代码发生了什么,但请确保您没有在每个页面上调用
登录
函数,因为如果
$user
为空,该函数将设置为注销。同时检查您呼叫的任何其他位置
注销
。您需要先登录,然后才能首次访问LastActive。另外,打开通知(error_reporting),这将生成一个未定义的通知…@bwoebi我在UserManagement中添加了一个check,以确保会话超时代码仅在用户已登录时执行。它现在正在按预期工作。非常感谢。
/// <summary>
/// Attempts to return an authenticated user.
/// </summary>
function SignIn($emailAddress, $password)
{
    $user = ORM::for_table('Users')->where_equal('EmailAddress', $emailAddress)->where_equal('Password', sha1($password))->find_one();

    if($user != null)
    {
        $_SESSION['SI'] = true;

        $_SESSION['FirstName'] = $user->get('FirstName');
        $_SESSION['LastName'] = $user->get('LastName');
        $_SESSION['EmailAddress'] = $user->get('EmailAddress');
        $_SESSION['UserID'] = $user->get('UserID');

        $_SESSION['LastActive'] = time();

        $user = null;
    }
    else
    {
        SignOut();
    }

    return $_SESSION['SI'];
}