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