Php 由于不活动导致会话超时

Php 由于不活动导致会话超时,php,Php,我已经创建了一个脚本login.php,在那里我创建了一个名为logged\u的会话变量 $_SESSION['logged_in'] = true; 由于不活动,会话到期后,我无法找到重定向到logout.php的方法。我还应该将使该会话变量过期的代码放入。我用谷歌搜索了这个bug,它建议在大多数文章中调整php.ini文件。然而,我看到一篇文章说这不是最佳实践。 我在StackOverflow上找到了以下代码,但我不知道该放在哪里:- <?php if ($_SESSION['t

我已经创建了一个脚本
login.php
,在那里我创建了一个名为
logged\u的会话变量

$_SESSION['logged_in'] = true;
由于不活动,会话到期后,我无法找到重定向到logout.php的方法。我还应该将使该会话变量过期的代码放入。我用谷歌搜索了这个bug,它建议在大多数文章中调整
php.ini
文件。然而,我看到一篇文章说这不是最佳实践。

我在StackOverflow上找到了以下代码,但我不知道该放在哪里:-

<?php
  if ($_SESSION['timeout'] + 10 * 60 < time()) {
     // session timed out
  } else {
     // session ok
  }
?>

我想知道会话到期后重定向的最佳方式,以及将代码放在何处的建议。

编辑:我忘了提到我想知道如何手动设置会话过期的时间。

提前感谢您

实施此想法:

$expire_time = 3*60*60; //expire time
if( $_SESSION['last_activity'] < time()-$expire_time ) {
    echo 'session expired';
    die();
}
else {
    $_SESSION['last_activity'] = time(); // you have to add this line when logged in also;
    echo 'you are uptodate';
}
$expire\u time=3*60*60//过期时间
如果($\会话['last\ u activity']
如果用户在长时间不活动的情况下试图加载页面,您希望注销该用户,则应将此代码放在每个php文件的顶部(在任何其他html标记之前):

在该页面上,您不必包含我首先提供给您的检查代码


顺便说一句,别忘了添加
会话开始是否应该包含在所有页面中?@surfine你所说的
会话开始到底是什么意思?代码
$\u会话['logged\u in']=true?你应该把它放在登录登录页面上。我已经编辑了我的答案。这对我来说是可行的,但我登录后进入的页面是我的应用程序主页,如果您在非主页的页面上等待计时器/会话过期,请单击指向主页的链接,会话将继续。当会话过期时,我如何使链接返回到主页并注销用户?忽略上述评论。我想出来了。我所需要做的就是让我的登录页面链接到一个重定向页面,该页面包含您的第二块代码并重定向到主页。然后我还需要在主页上实现你的第一块代码。Thanks@AlMar89太好了,你解决了!
if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) { //have we expired?
    //redirect to logout.php
    header('Location: http://yoursite.com/logout.php'); //change yoursite.com to the name of you site!!
} else{ //if we haven't expired:
    $_SESSION['last_activity'] = time(); //this was the moment of last activity.
}
$_SESSION['logged_in'] = true; //set you've logged in
$_SESSION['last_activity'] = time(); //your last activity was now, having logged in.
$_SESSION['expire_time'] = 3*60*60; //expire time in seconds: three hours (you must change this)