5

スクリプトlogin.phpを作成し、そこで次の名前のセッション変数を作成しましたlogged_in

$_SESSION['logged_in'] = true;

非アクティブのためにセッションが期限切れになった後、logout.php にリダイレクトするようにリダイレクトする方法がわかりません。また、このセッション変数を期限切れにするコードを配置する必要があります。私はバグをグーグルで検索しましたが、それが示唆しているのはphp.ini、ほとんどの記事でファイルを微調整することです. しかし、それはベスト プラクティスではないという記事を見つけました。

StackOverflow で次のコードを見つけましたが、どこに置くべきかわかりません:-

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

セッションの有効期限が切れた後にリダイレクトする最善の方法と、コードを配置する場所の提案を知りたいです。

編集:セッションの有効期限を手動で設定する方法を知りたいことを忘れていました。

前もって感謝します

4

2 に答える 2

14

ユーザーが長時間非アクティブなときにページを読み込もうとしたときにユーザーをログアウトさせたい場合は、このコードをすべての php ファイルの先頭 (他の HTML タグの前) に配置する必要があります。

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)

そのページでは、最初に提供したチェック コードを含める必要はありません。

ところで、<?phpタグを正しく追加することを忘れないでください!

于 2013-03-24T07:53:02.290 に答える
1

このアイデアを実装します。

$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';
}
于 2013-03-24T07:28:20.337 に答える