2016-11-24 11 views
-2
<?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; 


?> 

このスクリプトをオンラインから取得しましたが、ここでセッションのタイムアウトを開始して終了したかったのです。セッションにタイマーをかけて終了したい

+0

申し訳ありません私は "z"これを提出していなかったので、この文章を書かなければなりません –

+0

それでは、これまでに何を試しましたか? –

+0

私はifループでセッションを開始して終了しようとしましたが、正しく動作しません –

答えて

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分後に無効になります。

関連する問題