PHP でセッションを強制的に再起動するのに問題があります。問題は次のとおりです。
でセッション ID を取得してsession_id()
コピーし、スクリプトの一番上に追加できます。
session_id('the_session_id');
session_start();
また、新しいブラウザーを開くと、他のブラウザーからのセッションが引き継がれません。どのような設定を確認できますか?
理由:
ブラウザー ウィンドウを閉じて再度開くと、この時点で別の ID で 2 番目のセッションが開始されます。使用されている Web アプリケーションにセッション ベースの認証システムがある場合、ユーザーは再度ログインする必要があります。同時に、ユーザーは 2 回ログアウトする必要があります。
解決:
この関数は、セッション ID に実際の Cookie を使用し、スクリプトの実行ごとに有効期限を更新します。有効期限は、PHP ディレクティブ "gc_maxlifetime" (デフォルト) またはすべてのカスタム値と同じです。したがって、この関数を PHP ファイルに入れます。必要になります。
<?php
// $expire = the time in seconds until a session have to expire
function start_session($expire = 0)
{
if ($expire == 0)
$expire = ini_get("session.gc_maxlifetime");
else
ini_set("session.gc_maxlifetime", $expire);
if (empty($_COOKIE['PHPSESSID']))
{
session_set_cookie_params($expire);
session_start();
}
else
{
session_start();
setcookie("PHPSESSID", session_id(), time() + $expire);
}
}
?>
ここで、発行しているページの上部で、session_id('the_session_id');
これらsession_start();
の行を削除し、以下のコードでセッションを開始します。
PHP 構成によって指定された有効期限でセッションを開始するには
start_session();
1 時間で期限切れになるセッションを開始するには:
start_session(3600);