2

PHP でセッションを強制的に再起動するのに問題があります。問題は次のとおりです。

でセッション ID を取得してsession_id()コピーし、スクリプトの一番上に追加できます。

session_id('the_session_id');
session_start();

また、新しいブラウザーを開くと、他のブラウザーからのセッションが引き継がれません。どのような設定を確認できますか?

4

1 に答える 1

0

理由:

ブラウザー ウィンドウを閉じて再度開くと、この時点で別の 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);
于 2010-09-05T02:39:53.133 に答える