私はcodeIgniterで書かれたPHPアプリを持っています。アプリのタイムアウトについてクライアントから苦情が寄せられています。彼らのセッションは2時間活動がなかった後にタイムアウトし、彼らはそれを覚えていないようです。
ユーザーセッションがタイムアウトしたときにポップアップメッセージを表示する方法はありますか?
前もって感謝します。
私はcodeIgniterで書かれたPHPアプリを持っています。アプリのタイムアウトについてクライアントから苦情が寄せられています。彼らのセッションは2時間活動がなかった後にタイムアウトし、彼らはそれを覚えていないようです。
ユーザーセッションがタイムアウトしたときにポップアップメッセージを表示する方法はありますか?
前もって感謝します。
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
次を使用してそれを行うことができます:
$_SESSION
、タイムスタンプの差を計算します (ユーザーがログイン ページにリダイレクトされたときに、「セッションがタイムアウトしました」というメッセージを渡します)。ユーザーグループごとに異なるタイムアウト期間を提供することさえできます...
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 用に書かれたものではありませんが、セッション期限切れの打撃を和らげるために何ができるかを理解するのに役立つことを願っています。
おそらく、セッションの maxlifetime は 2 時間です。これを編集できます: (8 を時間単位の最大寿命に置き換えます)。
ini_set(’session.gc_maxlifetime’, 8*60*60);