我想给会话一个计时器并结束它

时间:2016-11-24 06:01:30

标签: php

<?php

function saveUsers($onlineusers_file){
    $file_save=fopen("onlineusers.txt","w+");
    flock($file_save,LOCK_EX);
    for($line=0;$line<count($onlineusers_file);$line++){
        fputs($file_save,$onlineusers_file[$line]."\n");
    };
    flock($file_save,LOCK_UN);
    fclose($file_save);
}

$onlineusers_file=file("onlineusers.txt",FILE_IGNORE_NEW_LINES);
if (isset($_POST['user'],$_POST['oper'])){
    $user=$_POST['user'];
    $oper=$_POST['oper'];
    $userexist=in_array($user,$onlineusers_file);
    if ($userexist)$userindex=array_search($user,$onlineusers_file);

    if($oper=="signin" && $userexist==false){
        $onlineusers_file[]=$user;
        saveUsers($onlineusers_file);

        echo "signin";
        exit();
    }

    if($oper=="signin" && $userexist==true){
        echo "userexist please enter other name";
        exit();
    }

    if($oper=="signout" && $userexist==true){
        array_splice($onlineusers_file,$userindex,1);
        saveUsers($onlineusers_file);
        echo "signout";
        exit();
    }

    if($oper=="signout" && $userexist==false){
        echo "usernotfound";
        exit();
    }
}
$olu=join("<br>",$onlineusers_file);
echo $olu;


?>

我已经从网上获取了这个脚本,我想在这里开始和结束会话超时。

1 个答案:

答案 0 :(得分:1)

首先,您希望存储会话开始的时间

<?php
  $_SESSION['timeout'] = time();
?

然后在另一个请求中检查他们的会话时间(下面的示例基于10分钟),因此如果他们的初始会话被请求超过10分钟,则会话无效。否则它仍然有效

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

另请注意:会话超时也取决于您的php.ini。如果ini文件中的值为5分钟,则会话将在5分钟后失效 - 无论您在代码中指定了什么。