2

私はcodeIgniterで書かれたPHPアプリを持っています。アプリのタイムアウトについてクライアントから苦情が寄せられています。彼らのセッションは2時間活動がなかった後にタイムアウトし、彼らはそれを覚えていないようです。

ユーザーセッションがタイムアウトしたときにポップアップメッセージを表示する方法はありますか?

前もって感謝します。

4

3 に答える 3

3

PHPポップアップを単独で表示することはできませんがJavaScript、セッションステータスをクエリして、セッションの有効期限が切れたときにポップアップを表示することもできます。さらに良いのは、セッションが開いてからの時間をカウントし、ユーザーにセッションを事前に知らせることです。タイムアウトしそうです

セッションの期間を変更したい場合は、config.php

$config['sess_expiration']      = 7200;

7200は120分*60秒です。に変更しても0、セッションは期限切れになりません。

警告を追加するには、非常に簡単な方法で、次のJavaScriptようなものを追加します。

setTimeout(function(){alert("Your session will expire in 5 minutes")},6900000); // 6900 seconds (115 minutes) * 1000 milliseconds
于 2012-12-12T22:36:26.247 に答える
2

次を使用してそれを行うことができます:

  • タイマーを使用した Javascript 関数 (一定時間後にポップアップを表示する)
  • PHP で設定されたタイマーを使用して$_SESSION、タイムスタンプの差を計算します (ユーザーがログイン ページにリダイレクトされたときに、「セッションがタイムアウトしました」というメッセージを渡します)。
  • セッション タイムアウト ページへのメタ equiv タグを使用したハード タイムアウト/ページ リダイレクト。

ユーザーグループごとに異なるタイムアウト期間を提供することさえできます...

PHP を使用した例では、ログアウトし、ログインし直したときに通知してリダイレクトします。

// get time now
   $now = time();

// Set session period
   $autologout = '7200';

if (isset($_SESSION["TimeOut"]))
{   
    if ($now > $_SESSION["TimeOut"])
    {
    // Unregister session and set message
        session_unregister("authenticatedUser");
        session_register("loginMessage");
        $loginMessage = "Your session has timed out";

    // Capture request URL and store in a cookie so that they 
    // are logged back into the page they were requesting
        $requestURL = $_SERVER[REQUEST_URI];
        setcookie("requestURL",$requestURL,"0",'/','',FALSE,TRUE);

    // Redirect back to login page
        header("Location: " . $loginScript);
        exit;
    } else {
        $_SESSION['TimeOut'] = ($now + $autologout);
    }
} else {
        $_SESSION['TimeOut'] = ($now + $autologout);
}

これは、システム セッションのタイムアウトが長いか、別の方法で設定されていることを前提としています。これも codeIgnitor 用に書かれたものではありませんが、セッション期限切れの打撃を和らげるために何ができるかを理解するのに役立つことを願っています。

于 2012-12-12T22:43:52.190 に答える
0

おそらく、セッションの maxlifetime は 2 時間です。これを編集できます: (8 を時間単位の最大寿命に置き換えます)。

 ini_set(’session.gc_maxlifetime’, 8*60*60);
于 2012-12-12T22:38:37.050 に答える