ここで、正しい結果が得られるサンプルコードを投稿しています。つまり、60 秒間アクションを実行しないと、ページから自動的にログアウトされます。以下のコードを使用してください。
<?php
session_start();
// set time-out period (in seconds)
$inactive = 600;
// check to see if $_SESSION["timeout"] is set
if (isset($_SESSION["timeout"])) {
// calculate the session's "time to live"
$sessionTTL = time() - $_SESSION["timeout"];
if ($sessionTTL > $inactive) {
session_destroy();
header("Location: /logout.php");
}
}
$_SESSION["timeout"] = time();
問題は、ISSET() 関数内で $sessionTTL を計算していることです。2 つのオペランドがあるので、最初の 1 つは time() で現在の時刻を示し、2 番目のオペランドは $_SESSION["timeout] で、このタイムアウトには現在の時刻も含まれているため、両方の差は常にゼロになります。では、このコードは、私が 60 秒間アイドル状態であり、セッションを破棄できることをどのように確認できるのでしょうか? この背後にある概念を説明してください!