0

ユーザーがログインしてオンラインステータスを1に設定し、ログアウトして0に戻すと、サイトで一定時間非アクティブになった後、logout.phpに送信されるようにしようとしているので、フィールドを設定しますユーザーテーブルで、タイムスタンプとしてlast_activityとして。このコードを各ページに含めるようにします。

<?php
if (!isset($_SESSION['last_activity'])) {
    // initiate value
    $_SESSION['last_activity'] = time();
}
if (time() - $_SESSION['last_activity'] > 500) {
    // last activity is longer then certain amount of time
    header('Location: logout.php');
} else {
    // update last activity timestamp
    $_SESSION['last_activity'] = time();
}
?>

しかし、今のところ、last_activityフィールドは、ユーザーアカウントの何かが更新されたとき、およびユーザーがログアウトされていない一定の時間が経過した後、理由がわからない場合にのみ更新されます。

4

2 に答える 2

4

非アクティブ状態が 15 分間続いた後の自動ログアウトから:

<?php
session_start();
$timeout = 10; // Set timeout minutes
$logout_redirect_url = "index.php"; // Set logout URL

$timeout = $timeout * 60; // Converts minutes to seconds
if (isset($_SESSION['start_time'])) {
    $elapsed_time = time() - $_SESSION['start_time'];
    if ($elapsed_time >= $timeout) {
        session_destroy();
        header("Location: $logout_redirect_url");
    }
}
$_SESSION['start_time'] = time();
?>
于 2013-01-06T01:05:28.480 に答える
0

あなたのコードはファイルの一番上にあり、session_start() でセッションを開始する必要があります

于 2013-01-06T01:16:19.293 に答える