例の記事をまた貼ります.
なお,セッションの延長を許可する実装にする場合,ログインから何分が経過したか覚えておき,一定時間を超過していたらsession_regenerate_id
を実行すべきだと思います.
改良版を載せておきます.
php
1function extensible_session_start($lifetime = 0, $updatetime = 1440, $name = null)
2{
3 ini_set('session.gc_maxlifetime', $lifetime);
4 session_set_cookie_params($lifetime, '/', '', false, true);
5 if ($name !== null) {
6 session_name($name);
7 }
8 $name = session_name();
9 if (isset($_COOKIE[$name])) {
10 if (!ctype_alnum($_COOKIE[$name])) {
11 unset($_COOKIE[$name]);
12 } elseif ($lifetime > 0) {
13 setcookie($name, $_COOKIE[$name], time() + $lifetime, '/', '', false, true);
14 }
15 }
16 if (!session_start()) {
17 return false;
18 }
19 if (!isset($_SESSION['__NEXT_UPDATE__'])) {
20 $_SESSION['__NEXT_UPDATE__'] = time() + $updatetime;
21 } elseif ($_SESSION['__NEXT_UPDATE__'] <= time()) {
22 session_regenerate_id(true);
23 $_SESSION['__NEXT_UPDATE__'] = time() + $updatetime;
24 }
25 return true;
26}
27
28extensible_session_start(86400, 900); // 有効期限1日, 更新間隔15分
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/16 01:49
2016/06/16 02:08
2016/06/16 03:50
2016/06/16 05:10