【问题标题】:Pausing and restarting sessions [closed]暂停和重新启动会话[关闭]
【发布时间】:2013-07-06 05:30:44
【问题描述】:

如何在特定时间后(例如用户闲置 30 分钟)暂停会话而不注销用户?

更具体地说,我想知道用户何时登录、会话何时开始以及会话持续时间。如果用户在 30 分钟内不活动,则应暂停会话 - 但不要注销 - 并记录“休息时间”的数量。如果用户仍然处于非活动状态一小时,会话将被终止并注销。

注意:如果用户在 30 分钟后处于活动状态,则会话应重新启动。

我的代码如下。你能为我推荐一个更好的来源吗?

include('../config/connect.php');
session_cache_expire( 20 );
session_start(); // NEVER FORGET TO START THE SESSION!!!
$inactive = 3600;
if(isset($_SESSION['start']) ) {
$session_life = time() - $_SESSION['start'];
if($session_life > $inactive){
header("Location:mylogout.php");
}
}
$_SESSION['start'] = time();

if($_SESSION['LOGIN_STATUS'] != true){
header('Location:mylogin.php');
}else{

【问题讨论】:

  • 他不能退出为什么要折磨你的用户?
  • 最好使用 cookie 或在数据库中存储会话 ID。
  • 如果会话暂停,用户如何取消暂停?如果取消暂停是自动的,那么首先暂停有什么意义? 每个会话在服务器上的命中之间按定义“暂停”。

标签: php mysql session-timeout


【解决方案1】:

将会话保存到数据库中:

$session->update('session',serialize($_SESSION),'userid = '.$userid);

你可以重新加载:

$_SESSION = unserialize($session->select('userid = '.$userid));

注意:这是一个典型的例子。自己试试

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2014-02-15
    • 2020-04-09
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多